2
<asp:TemplateField>
    <ItemTemplate>
        <asp:Button ID="lbShowGroup" CommandName="View" CommandArgument='<%# Eval("Topic") %>'
                            runat="server" Text="View"></asp:Button>
    </ItemTemplate>
</asp:TemplateField>

后面的代码:

protected void tblTopics_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "View")
    {
        Response.Redirect("Group.aspx?Topic=" + e.CommandArgument.ToString());
    }
}

调试没有到达RowCommand事件,但是当我将按钮控件更改为 时LinkButton,它可以工作。怎么了?

4

2 回答 2

4

您是否在回发时对您的网格进行数据绑定?

不能在 中的回发上绑定您的网格Page_Load,只有当某些更改导致GridView重新加载数据(fe 排序,分页)并且仅在适当的偶数处理程序中。

因此,将数据绑定包装在PostBack-check 中:

protected void Page_Load(Object sender, EventArgs e)
{
    if(!IsPostBack)
    {
        DataBindGrid();
    }
}

另一个可能的原因:您是否在ViewState某个地方禁用过?

于 2013-03-13T14:01:01.263 回答
1

我遇到了同样的问题,发现我的问题出在母版页中EnableViewState="false"

我将母版页更改为使用EnableViewState="True".
并且rowcommand事件按预期触发。

于 2014-02-17T22:41:56.990 回答