2009-01-30 10 views
0

Je suis sûr que presque tout le monde de la programmation en .net a couru dans des problèmes similaires avec la création dynamique de boutons ..développement .net contrôles créés dynamiquement ont besoin de leurs propres méthodes

Exemple de scénario ..

I avoir un gridview et dans l'un des champs gridview j'ai un bouton. Normalement en .net en utilisant Visual Studio, vous pouvez facilement saisir l'événement click du bouton, mais comme ces boutons sont créés dynamiquement, ils ne sont pas aussi faciles à saisir. J'étais curieux de savoir quelle serait la meilleure méthode pour saisir l'événement click du bouton. Je comprends que c'est possible en utilisant dopostback; Cependant, je ne suis pas sûr de savoir comment l'implémenter et je n'ai pas essayé parce que j'ai aussi lu la méthode dopostback n'est pas très bon à utiliser. Pourquoi donc?

Répondre

1

Malheureusement, la réponse est beaucoup plus simple que je ne pensais ..

Je ne savais pas que l'événement ItemCommand était utilisable pour les boutons créés dans un TemplateField.

Tout ce que je devais vraiment faire était ..

Private Sub GridView1_ItemCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DetailsViewCommandEventArgs) Handles DetailsView1.ItemCommand 
    If e.CommandName = "myButton" Then 
     //'myButton press event logic here 
    End If 
End Sub 

Merci pour votre aide les gars .. je l'apprécie vraiment. Vos réponses seront utiles à l'avenir, j'en suis sûr.

4

Dans gridview, il existe un événement appelé RowDatabound. Mettre un gestionnaire d'événements sur ce point:

gv.RowDataBound += new EventHandler(rowBound); 

maintenant dans cette fonction, vous utiliserez FindControl pour localiser le bouton et ajouter un gestionnaire:

function rowbound(Object sender, GridViewRowEventArgs e) 
{ 
    if(e.Row.RowType == DataControlRowType.DataRow) 
    { 
     var b = e.Row.FindControl("btn") as Button; 
     b.Click += new EventHandler(handleBtnClick); 
    } 
} 
+0

Je pense que goodwince demande comment définir un gestionnaire d'événements pour un contrôle créé dynamiquement dans une grille. La réponse de cmsjr semble mieux convenir. –

+0

vous avez raison. Je l'ai corrigé –

2

Au cours de la L'événement ItemCreated de Gridview utilise FindControl pour obtenir une référence au bouton et y attacher le gestionnaire d'événements. c'est à dire. btn.Click + = Somehandler;