Attribuer dynamiquement des événements de bouton en c# asp.net
Pouvez-vous me dire quel est le problème avec le code suivant?
Panel div = new Panel();
Button btn1 = new Button { Text = "Delete", CommandArgument = "argument", ID = "remove" };
Button btn2 = new Button { Text = "Insert", CommandArgument = "argument2", ID = "insert" };
btn1.Click += new EventHandler(btn_click);
btn2.Click += new EventHandler(btn_click);
div.Controls.Add(btn1);
div.Controls.Add(btn2);
ph_plan.Controls.Add(div); //where ph_plan is a placeholder in the user control
protected void btn_click(object sender, EventArgs e)
{
Button btn = (Button)sender;
if(btn.ID == "remove")
//do this
else
//do that
}
Le code ci-dessus se produit juste après un clic sur un bouton dans le formulaire utilisateur. Il est censé créer 2 nouveaux boutons avec des événements affectés. En effet, il crée les boutons, mais quand je clique dessus rien ne se passe. Je suppose que les événements ne peuvent pas être enregistrés. Ce que je fais mal ici?
- Peut-on voir le btn_click code pour faire bonne mesure?
- Pouvez-vous nous montrer le code pour btn_click?
- bien sûr. Je suis en train de modifier dès maintenant
- fait, mais s'il vous plaît garder à l'esprit que le problème est que l'événement n'est pas déclenché.
Vous devez vous connecter pour publier un commentaire.
La raison de ce qui se passe, c'est parce que
Page
est un apatrides de classe et une fois qu'il rend tout, il est détruit. Par conséquent, une fois que vous avez une publication, cette information est perdue et votrePage
classe n'a pas connaissance du bouton événements, depuis la dynamique des boutons n'ont pas été une partie de laaspx
fichier.Vous avez besoin pour maintenir une collection de la dynamique de contrôles que vous avez créé, peut-être dans une session, de sorte qu'ils peuvent être recréés après une publication. Il y a un exemple de ici.
Comment créer plusieurs de contrôle dans asp.net avec de l'événement:
Ce code affichera chaque bouton id qui ont été créés lors de l'exécution dans la page de l'événement load.