IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

[debutant] probleme cycle de vie page


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 21
    Par défaut [debutant] probleme cycle de vie page
    Bonjour,

    Apres des kilometres de lecture parfois noir dans la compréhension. j'ai fini par me lancé.

    j'ai donc a titre d'exemple créer une page et trois usercontrol.
    Dans cette page je charge mes controls dynamiquement via une valeur en viewstate.

    Chaque control possede un evenement.

    Je me sert de cette evenement pour incrémenter la valeur du viewstate du control via une propriete qui incremente une valeur du viewstate de la page via une autre propriete pour charger le control suivant dynamiquement.

    exemple:
    page action = 1 > charge control 1
    control 1 chargé > assigne propriete > déclenche evenement pour assigné proprieté page.

    code des 3 usercontrols
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
     
    	public partial class ControlTest1 : System.Web.UI.UserControl {
     
            public event EventHandler ActionControl;
     
    		public String Action {
     
    			get {
                    String s = (String)ViewState["Action"];
    				return ((s == null) ? String.Empty : s);
    			}
    			set {
                    ViewState["Action"] = value;
     
                    if (this.ActionControl != null)
                        this.ActionControl(this, EventArgs.Empty);
    			}
    		}
     
    		protected void Page_Load(object sender, EventArgs e) {
     
    		}
     
    		protected void Button1_Click(object sender, EventArgs e) {
    		}
    	}
    code de la page
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
     
     
    	public partial class _Default : System.Web.UI.Page {
     
    		MultiControl.Controls.ControlTest1 uc1;
    		MultiControl.Controls.ControlTest2 uc2;
    		MultiControl.Controls.ControlTest3 uc3;
     
    		protected String Action {
    			get {
    				String s = (String)ViewState["Action"];
    				return ((s == null) ? "1" : s);
    			}
     
    			set {
    				ViewState["Action"] = value;
    			}
    		}
    		protected void Page_Load(object sender, EventArgs e) {
     
    			switch (this.Action) {
    				case "1":
    					uc1 = (MultiControl.Controls.ControlTest1)this.Page.LoadControl("~/Controls/ControlTest1.ascx");
                        uc1.ActionControl += new EventHandler(uc1_ActionControl);
                        uc1.Action = "2";
                        this.form1.Controls.Add(uc1);
    					break;
                    case "2":
                        uc2 = (MultiControl.Controls.ControlTest2)this.Page.LoadControl("~/Controls/ControlTest2.ascx");
                        uc2.ActionControl += new EventHandler(uc2_ActionControl);
                        uc2.RetourControl += new EventHandler(uc2_RetourControl);
                        uc2.Retour = "1";
                        uc2.Action = "3";
                        this.form1.Controls.Add(uc2);
                        break;
                    case "3":
                        uc3 = (MultiControl.Controls.ControlTest3)this.Page.LoadControl("~/Controls/ControlTest3.ascx");
                        uc3.ActionControl += new EventHandler(uc3_ActionControl);
                        uc3.Action = "2";
                        this.form1.Controls.Add(uc3);
                        break;
                }
                Response.Write(this.Action);
     
    		}
     
            void uc2_RetourControl(object sender, EventArgs e) {
                this.Action = "1";
            }
     
            void uc3_ActionControl(object sender, EventArgs e) {
                this.Action = uc3.Action;
            }
     
            void uc2_ActionControl(object sender, EventArgs e) {
                this.Action = uc2.Action;
            }
     
            void uc1_ActionControl(object sender, EventArgs e) {
                this.Action = uc1.Action;
            }
     
    	}
    en gros un control appel un autre control.

    La question que je me pose est de savoir si la methode en elle meme est la reecriture de quelque chose de deja existant, ou est ce que la methode de chargement est conforme au cycle de vie d'une page.

    j'espere ne pas trop confu dans mon explication
    merci

  2. #2
    Membre Expert Avatar de Arthis
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : Italie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 265
    Par défaut
    premiere chose : si tu crees des controles dynamiquement tu les crees dans le on init. C'est indipensable pour pouvoir recuperer les evenements qui s'y rapporteront.

    deuxieme chose: ce que tu éssayes de faire existe dejà , cela s'appelle un multiview. regarde de ce coté là.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 21
    Par défaut
    apres lecture et recherche

    le multiview sert pour rassemblé des controls dans une vue, ce qui rend la page tres lourd et ne solutionne pas forcément ma démarche malgré la visibilité true/false des vues.

    Autre solution mettre des usercontrols dans le multiview, et cela ne convient toujours pas pour la capture des evenements des usercontrols au sein meme de la page.

    le probleme du chargement dynamique des controls reste le meme, et effectivement le seul remede est une surcharge de la methode OnInit.

    Maintenant la question que je me pose est:
    Est-il toujours evident de remonté les valeurs de viewstate du control a la page via les évenements.

    merci

  4. #4
    Membre Expert Avatar de Arthis
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : Italie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 265
    Par défaut
    Le multiview a ses limites.Enfin les limites que tu veux bien lui donner. Effectivement, cela peut donner des usines à gaz ce que je ne recommende pas. Par contre , pour afficher des ecrans du style action reussie ou echec il est tres pratique.

    Ensuite pour répondre à ta question:

    Citation Envoyé par tradenco Voir le message
    a
    Est-il toujours evident de remonté les valeurs de viewstate du control a la page via les évenements.
    non ce n'est pas toujours évident... mais faisable oui certainement.

Discussions similaires

  1. [Débutant] Cycle de vie page
    Par SONY30 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 13/02/2012, 13h10
  2. [Debutant] probleme avec ma premiere page
    Par pepitoluna dans le forum Struts 1
    Réponses: 0
    Dernier message: 19/05/2010, 14h59
  3. Réponses: 6
    Dernier message: 26/11/2008, 11h30
  4. Cycle de vie d'une page asp.net
    Par lazins dans le forum ASP.NET
    Réponses: 12
    Dernier message: 03/11/2008, 17h50
  5. [JSP][Struts][Debutant]Probleme de liens dans pages JSP
    Par bluefox_du_974 dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 08/12/2004, 16h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo