2009-08-14 5 views
0

J'ai un UpdatePanel contenant un GridView qui contient un bouton dans le HeaderTemplate d'un TemplateField. Je souhaite ajouter l'événement click de ce bouton à la collection de déclencheurs de UpdatePanel, mais cela ne semble pas fonctionner car je reçois un message d'erreur indiquant qu'un contrôle avec l'ID spécifié n'a pas pu être trouvé.Comment enregistrer l'événement click du bouton dans l'en-tête GridView avec ajax UpdatePanel

J'ai pensé à ajouter par programmation à la collection de déclencheurs de UpdatePanel au chargement de la page, mais cela ne semble pas possible.

Y at-il une solution à ce problème? Idéalement, j'aimerais conserver mon bouton dans l'en-tête de GridView.

Répondre

1

J'ai résolu ceci en accédant au ScriptManager sur la page au lieu du UpdatePanel lui-même. Je l'ai fait dans la méthode Page_Load. Mon code est le suivant:

if (!Page.IsPostBack) 
{ 
    Button button = GridView1.HeaderRow.FindControl("myHeaderButton") as Button; 
    if (button != null) 
     scriptManager.RegisterAsyncPostBackControl(button); 
} 
-1

Désolé pour le code VB. Je n'ai pas la possibilité de tester ce (et il y a une chance qu'il est loin, et il y a probablement une meilleure façon de le faire), mais il devrait vous orienter dans la bonne direction:

Dim g As GridView = UpdatePanel1.FindControl(nameofgridview) 
Dim Button As Button = g.HeaderRow.FindControl(nameofbutton) 
Dim u As UpdatePanel = Page.FindControl(panelID) 
Dim trigger As UpdatePanelControlTrigger 
trigger.ControlID = Button 
u.Triggers.Add(trigger) 
+0

Votre suggestion ne fonctionne pas comme UpdatePanelControlTrigger est une classe abstraite et ne peut pas être instanciée. –

Questions connexes