Appel d'une procédure événement Click dans une procédure exécutée lors d'un Clic
mimijesss
Messages postés6Date d'inscriptiondimanche 8 mai 2011StatutMembreDernière intervention28 juin 2011
-
27 juin 2011 à 16:16
Whismeril
Messages postés19025Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention19 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
A voir également:
Appel d'une procédure événement Click dans une procédure exécutée lors d'un Clic
Whismeril
Messages postés19025Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention19 avril 2024656 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 .....
mimijesss
Messages postés6Date d'inscriptiondimanche 8 mai 2011StatutMembreDernière intervention28 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