2009-04-13 12 views
1

J'ai ajouté un bouton créé dynamiquement dans mon formulaire Web. Mais son événement click ne fonctionne pas. Quelqu'un peut-il expliquer pourquoi?ASP.NET - Bouton créé dynamiquement

Ceci est mon code:

Button save = new Button(); 
    save.ID = "btnSave"; 
    save.Text = "Save"; 
    save.Click += new System.EventHandler(this.Save_Click); 
    Webform.Controls.Add(save); 

protected void Save_Click(object sender, EventArgs e) 
{ 

    Response.Redirect("Default.aspx"); 
} 

Son à revenir à la même page elle-même. Il ne redirige pas vers Default.aspx.

Répondre

4

Votre exemple de code n'est pas assez complet pour un diagnostic, mais je vais essayer.

À quel moment du cycle de vie de la page ajoutez-vous le bouton à la page? Si vous le faites dans PreRender, c'est pourquoi cela ne fonctionne pas. Vous devriez le faire pendant Init.

MISE À JOUR:

Vous ne pouvez pas créer dynamiquement un contrôle après la phase d'initialisation du cycle de vie de la page et le faire fonctionner correctement, sauf si vous créez la même façon à chaque fois. En effet, le cycle de vie ressemble à ceci:

Init -> Charger ViewState -> Chargement de la page -> Gestionnaires d'événements -> PreRender.

Vous créez un bouton et lui donnez un gestionnaire d'événements pendant la deuxième phase. Cela signifie que le bouton n'est jamais enregistré pour enregistrer son ViewState avec la page, et que l'état de ce bouton n'est pas restauré lorsque vous cliquez dessus, ce qui signifie que votre gestionnaire d'événements disparaît et ne sera jamais appelé. Ma suggestion serait de créer le bouton Enregistrer normalement sur la page (pas dynamiquement), et simplement le définir Visible = "Faux". Puis, sur le gestionnaire de clic de votre premier bouton, il suffit de définir votre bouton Enregistrer Visible = "true".

+0

Je fais un clic sur un bouton –

+0

Vous créez un autre bouton en cliquant sur le bouton? –

+0

ya im en créant un autre bouton sur le bouton cliquez et c'est le gestionnaire d'événements du bouton nouvellement créé. –

0

Pouvez-vous déboguer cela et déterminer si le code parvient même à l'événement click, ou, y a-t-il un problème avec votre Redirect? Womp est correct, lier l'événement dans Page_Init.

Questions connexes