GridView RowCommand事件未触发

Tyl*_*eat 18 c# asp.net gridview

我有一个看起来像这样的GridView:

<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>
Run Code Online (Sandbox Code Playgroud)

这是RowCommand:

protected void RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "ItemExport")
    {
        // etc.
    }
}
Run Code Online (Sandbox Code Playgroud)

单击该按钮根本不会触发RowCommand事件.但是,RowCommand当我在GridView的寻呼机中单击页面索引时会触发.

Tim*_*ter 51

你一定不能在回发网格绑定在Page_Load中,只有当事情发生了转变,导致电网重新加载数据(FE排序,分页),只有在适当的事件处理程序.

另一个可能的原因:您是否在某处禁用了ViewState?

  • 难以置信这让我困扰了好几个小时......只是坐在这里茫然地盯着一些没有功能的ASP.NET代码...所有因为我设置了EnableViewState ="false":@ (7认同)

Sha*_*Dev 6

CausesValidation="false"在按钮标签中使用。它可以解决问题。


ice*_*oop 5

我刚刚有一个同事遇到了同样的问题;这是由于元素onrowcommand=中未设置属性引起的asp:GridView。这应该设置为将处理该事件的处理程序的名称。

...以防万一有人遇到同样的问题!