L'événement GridView RowCommand ne se déclenche pas
J'ai un GridView qui ressemble à quelque chose comme ceci:
<asp:GridView
ID="GridView1"
AllowPaging="true"
OnRowCommand="RowCommand"
OnPageIndexChanging="gridView_PageIndexChanging"
Runat="server">
<Columns>
...
<asp:TemplateField>
<ItemTemplate>
<asp:Button ID="Button1" ButtonType="Button" CommandName="ItemExport" CommandArgument='<%# Eval("EXPORT") %>'
Text="Export" runat="server" />
</ItemTemplate>
</asp:TemplateField>
...
</Columns>
</asp:GridView>
Ici est RowCommand
:
protected void RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "ItemExport")
{
//etc.
}
}
Cliquant sur le bouton déclenche pas le RowCommand
événement. Cependant, RowCommand
se déclenche lorsque je clique sur une page d'index dans le contrôle GridView du pager.
source d'informationauteur Tyler Treat | 2011-12-13
Vous devez vous connecter pour publier un commentaire.
Vous devez pas lier votre grille sur les publications dans le Page_Load, seulement quand quelque chose a changé qui provoque la Grille pour récupérer les données(f.e. Le tri,la Pagination) et seulement dans le cas des gestionnaires.
Une autre raison possible: Avez-vous désactivé ViewState quelque part?
J'ai juste eu un collègue qui a rencontré le même problème; son a été causé par le
onrowcommand=
attribut n'étant pas définie dans leasp:GridView
élément. Ce devrait être le nom du gestionnaire qui s'occupe de la manifestation.... juste au cas où quelqu'un a le même problème!
Utilisation
CausesValidation="false"
dans la balise button. Il peut résoudre le problème.Mettre le
grid.Databind()
à l'intérieur deif (!IsPostBack)
si votre code comme ceci:
mis dans le BindGrid() à l'intérieur de la isposback{} ligne
Vous pouvez également vérifier le HttpContext.Actuel.Demande.Form["__EVENTTARGET"] et si elle se termine avec l'ID du contrôle, de relier le GridView et l'utilisation de la Page.FindControl avec la cible de l'événement pour trouver la commande qui a déclenché l'événement
Mon problème était
requiredfieldvalidator
Solution qui a été: j'ai désactiver à nouveau, puis la réactiver après la ligne de commande.
Essayé les réponses ci-dessus et ne peut toujours pas obtenir un message de retour. Fini par être un ID Unique question. J'ai eu deux
<ItemTemplate>
avec des boutons qui avait le même id. (Dans les différents modes de vue. Mon deuxième était dans un Contrôle Utilisateur)La modification de la
<asp:Button ID="" />
à un ID Unique de résoudre le nouveau problème pour moi.Juste pensé que je post pour un autre qui a essayé les autres options à pas de chance.