Appel d'une procédure événement Click dans une procédure exécutée lors d'un Clic

mimijesss Messages postés 6 Date d'inscription dimanche 8 mai 2011 Statut Membre Dernière intervention 28 juin 2011 - 27 juin 2011 à 16:16
Whismeril Messages postés 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024 - 28 juin 2011 à 21:48
Bonjour tout le monde et merci d'avance pour votre aide
Comme énoncé dans l'intitulé, je n'arrive pas a faire appel à une procedure evenement Click d'un bouton se trouvant deja dans une procedure executée lors d'un Click d'un autre bouton. J'ai testé deux methodes :
private void Proc_click_btn_ajout_user(object sender, EventArgs e) //Procédure executée lors du clic sur bouton ajout user
        {
            

            foreach (string user_temp in list_ajout_user)
            {
                ListBox_ajout_user.Items.Add(user_temp);

                string[] var_user_selectionne =  user_temp.Split(sep); //découpage de la chaine avec le séparateur &
                user = var_user_selectionne[0];
                droit = var_user_selectionne[1];

                btn_suppr_user = new System.Web.UI.WebControls.Button();
                btn_suppr_user.Text = "Suppr";
                btn_suppr_user.ID = user + "&" + droit;                                                             
                 Proc_click_btn_suppr_user(btn_ajout_user, e); 
                this.Controls.Add(new LiteralControl("<tr><td> " + user + "</td><td> " + droit + "</td><td> "));
                this.Controls.Add(btn_suppr_user);
                lab_bienvenu.Text + = btn_suppr_user.ID;
                
            }          
          
        }


        private void Proc_click_btn_suppr_user(object sender, EventArgs e) //Procédure executée lors du clic sur bouton suppr user
        
{
            
            lab_bienvenu.Visible =  false;  // test pour verifier si mon code est bien executer et si l'apelle de la procedure fonctionne en cachant un label par ex.         
           
        }

et aussi

 private void Proc_click_btn_ajout_user(object sender, EventArgs e) //Procédure executée lors du clic sur bouton ajout user 
        {
            

            foreach (string user_temp in list_ajout_user)
            {
                ListBox_ajout_user.Items.Add(user_temp);

                string[] var_user_selectionne  = user_temp.Split(sep); //découpage de la chaine avec le séparateur &
                user =  var_user_selectionne[0];
                droit = var_user_selectionne[1];

                btn_suppr_user = new System.Web.UI.WebControls.Button();
                btn_suppr_user.Text = "Suppr";
                btn_suppr_user.ID = user + "&" + droit;                                                             
                 btn_suppr_user.Click += new system.EventHandler(this.Proc_click_btn_suppr_user); //appel de la procédure Proc_click_btn_visible lors du click sur un bouton 
                this.Controls.Add(new LiteralControl("<tr><td> " + user + "</td><td> " + droit + "</td><td> "));
                this.Controls.Add(btn_suppr_user);
                lab_bienvenu.Text + = btn_suppr_user.ID;
                
            }          
          
        }


        private void Proc_click_btn_suppr_user(object sender, EventArgs e) //Procédure executée lors du clic sur bouton ajout user
        
{
            
            lab_bienvenu.Visible = false;  // test pour verifier si mon code est bien executer et si l'apelle de la procedure fonctionne en cachant un label par ex.         
           
        }


La procédure est bien appelée et exécuté lorsque j'utilise la premiere methode mais dès que je clique sur mon bouton ajouté. Pour schématiser :
Quand je clique sur mon bouton AJOUT, un tableau est généré avec l'utilisateur sélectionné provenant d'une DropDownList. A chaque nouvel utilisateur selectionné puis validé par mon bouton AJOUT une nouvelle ligne est ajouté a mon tableau avec en bout de ligne un bouton suppr (comme définit dans le "foreach" ci dessus) C'est donc en cliquant sur un des boutons suppr d'une des lignes du tableau qu'il faudrait qu'une autre procédure soit exécutée. Si je m'explique mal dite le moi je comprendrai tout a fait
Encore merci pour votre aide

4 réponses

Whismeril Messages postés 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024 656
28 juin 2011 à 07:29
Bonjour,

une hypothèse btn_suppr_user est déclaré dans ta boucle, sa durée de vie est donc une itération.
  
List<System.Web.UI.WebControls.Button> MaListe = new List<System.Web.UI.WebControls.Button>();

          foreach (string user_temp in list_ajout_user)
            {
                ListBox_ajout_user.Items.Add(user_temp);

                string[] var_user_selectionne = user_temp.Split(sep); //découpage de la chaine avec le séparateur &
                user = var_user_selectionne[0];
                droit = var_user_selectionne[1];

                btn_suppr_user = new System.Web.UI.WebControls.Button();
                btn_suppr_user.Text = "Suppr";
                btn_suppr_user.ID = user + "&" + droit;  
               //dans mon idée la ligne dessous ne doit pas être dans cette boucle;                                                           
               //[b] btn_suppr_user.Click += new system.EventHandler(this.Proc_click_btn_suppr_user);
                //Proc_click_btn_visible lors du click sur un bouton/b
                MaListe.Add(btn_suppr_user);// on le mets dans une liste
                this.Controls.Add(new LiteralControl("<tr><td> " + user + "</td><td> " + droit + "</td><td> "));
                this.Controls.Add(btn_suppr_user);
                lab_bienvenu.Text += btn_suppr_user.ID;
                
            }  

foreach( button MonBoouton in MaListe)
         MonBouton += new system.EventHandler(this.Proc_click_btn_suppr_user); //appel de la procédure Proc_click_btn_visible lors du click sur un bouton



Sans certitude.
Si ça marche tu dois pouvoir tout faire dans une seule boucle, en abonnant l'élément de la liste.
Par contre je ne comprend pas le .....

Whismeril
0
mimijesss Messages postés 6 Date d'inscription dimanche 8 mai 2011 Statut Membre Dernière intervention 28 juin 2011
28 juin 2011 à 13:40
Bonjour et merci pour ton aide. J'ai testé ta méthode, cela n'a pas marché.
La procédure Click de mon bouton Suppr n'est pas exécutée. Pourtant quand j'utilise cette méthode d'appel de procédure "Proc_click_btn_suppr_user(btn_suppr_user, e);" elle est bien exécuté mais pas au bon evenement. Ma syntaxe est peut etre mauvaise, voila ce qu'il demande dans ce cas : Proc_click_btn_suppr( object sender , EventArgs e )
Ça te dit quelque chose ?
c'est énervant de galérer sur ce truc !
Ça doit être possible pourtant d'ajouter un bouton a chaque alimentation d'une nouvelle ligne dans un tableau et de pouvoir exécuter une procédure associée aux boutons a l'évènement Click. Ce qui est troublant c'est que ca marche si le tableau est générée hors d'une procédure d'évènement
Merci encore pour votre aide
0
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
28 juin 2011 à 15:41
Salut,

il me semble que tu ne peux déclarer des objets dynamiques avec événements serveur que dans le Load et le Init de ta page. A vérifier dans la MSDN.
0
Whismeril Messages postés 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024 656
28 juin 2011 à 21:48
Bonsoir,
je ne sais pas non désolé

Whismeril
0
Rejoignez-nous