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

 .NET Discussion :

Decalage, Probleme d'ordre d'entrée dans les fonctions


Sujet :

.NET

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 194
    Points : 74
    Points
    74
    Par défaut Decalage, Probleme d'ordre d'entrée dans les fonctions
    Bonsoir,

    Voilà je crée une interface avec un bouton où lorsque l'on click dessus crée une liste deroulante. voici le code

    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
     
     
        protected static int count; //compte le nombre de liste deroulante a creer
        protected static DropDownList[] ddl;
     
     
    //creation des liste deroulante
     protected void Page_PreInit(object sender, EventArgs e)
        {
            ddl = new DropDownList[count];
            for (int i = 0; i < count; i++)
            {
                ddl[i] = new DropDownList();
                ddl[i].ID = "ddl"+i;
                ListItem li = new ListItem("un","1");ddl[i].Items.Add(li);
                ListItem li2 = new ListItem("deux","2");ddl[i].Items.Add(li2);
                ListItem li3 = new ListItem("trois", "3"); ddl[i].Items.Add(li3);
                form1.Controls.Add(ddl[i]);
            }
        }
     
          //increment le nombre de dropdownlist
        protected void Button1_Click(object sender, EventArgs e)
        {
            count++;
        }
     
    //    permet d'afficher les item selectionné
        protected void Button2_Click(object sender, EventArgs e)
        {
            Label1.Text = "";
            for (int i = 0; i < count; i++)
            {
                Label1.Text += ddl[i].SelectedItem.Text;
            }
        }
    Lorsque l'on clique sur "bouton1" qui sert à incrementer le nombre de ddl à créer, le systeme commence par entrer dans le Page_PreInit, puis Button1_click.
    Du coup, le 1er click ne crée pas de ddl. En clickant cette fois sur bouton2, la ddl est crée car cette fois count = 1.

    En fait, il faudrait dans le Pre_Init incrementer count si la raison pr laquelle, on est dans le Pre_Init est qu'on a clické sur button1. Cela je n'y arrive pas.
    J'ai essayé avec EVENTTARGET mais comme il s'agit d'un bouton qui crée le post back EVENTTARGET est vide.

    Des idées??
    Merci.

  2. #2
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 082
    Points
    8 082
    Par défaut
    C'est le principe de cycle de vie d'une page:
    http://msdn.microsoft.com/en-us/library/ms178472.aspx

    Le PreInit est executé avant les postbacks: fais le plutot dans le prerender

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 194
    Points : 74
    Points
    74
    Par défaut
    Effectivement, lorsque je change le PreInit en PreRender cela marche nickel. Par contre je perd l'information de la liste deroulante.
    ddl[i].selectedItem.Text est toujours à 1.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        protected void Button2_Click(object sender, EventArgs e)
        {
            Label1.Text = "";
            for (int i = 0; i < count; i++)
            {
                Label1.Text += ddl[i].SelectedItem.Text;
            }
        }

Discussions similaires

  1. Ordre de priorité dans les fonctions gtk
    Par kenshi240683 dans le forum GTK+ avec C & C++
    Réponses: 7
    Dernier message: 23/05/2008, 17h12
  2. [Ordre Alphabétique]Objets dans les classes !
    Par kinji dans le forum Designer
    Réponses: 6
    Dernier message: 12/12/2007, 19h30
  3. [VS2005] il manque un entrée dans les menus
    Par zooffy dans le forum Visual Studio
    Réponses: 1
    Dernier message: 22/05/2007, 15h59
  4. [Tableaux] Manipulation d'entrées dans les tableaux
    Par Phenol dans le forum Langage
    Réponses: 3
    Dernier message: 28/02/2007, 18h53
  5. [FLASH 8] Probleme de ciblage dans les fonctions
    Par abenhass dans le forum Flash
    Réponses: 4
    Dernier message: 29/12/2005, 14h29

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