3

当我在具有 OnClick 事件的行中有一个按钮时,如何获取 GridView 行的 DataKeyName 的值。在我的按钮的 OnClick 事件中,我想获取按钮所在行的 DataKeyName。

这可能吗?

<asp:GridView ID="myGridView" run="server">
     <Columns>
          <asp:TemplateField HeaderText="Column 1">
               <ItemTemplate>
                   ... bunch of html codes
                   <asp:Button ID="myButton" UseSubmitBehavior="false" runat="server" Text="Click Me" onclick="btnClick_Click" />
               </ItemTemplate>
           </asp:TemplateField>
     </Columns>
</asp:GridView>

在我的代码隐藏中

protected void btnClick_Click(object sender, EventArgs e)
{
    // How can I get the DataKeyName value of the Row that the Button was clicked?
}
4

2 回答 2

5

当我使用 GridView 时,我通常不会将OnClick事件用于按钮。相反,我使用OnRowCommandGridView 上的事件,并将数据绑定到CommandArgument按钮的属性。GridViewCommandEventArgs您可以从事件处理程序的参数中检索命令参数。

您可以使用该CommandName参数绑定任意字符串,以区分您拥有的任何不同类型的按钮。请注意,某些命令名称已用于其他事件,例如“编辑”、“更新”、“取消”、“选择”和“删除”。

更新:

这是一个示例,假设数据键称为“​​ID”:

<asp:GridView ID="myGridView" runat="server" OnRowCommand="myGridView_RowCommand">
     <Columns>
          <asp:TemplateField HeaderText="Column 1">
               <ItemTemplate>
                   ... bunch of html codes
                   <asp:Button ID="myButton" runat="server" Text="Click Me" CommandName="ClickMe" CommandArgument='<%# Eval("ID") %>' />
               </ItemTemplate>
           </asp:TemplateField>
     </Columns>
</asp:GridView>

在代码隐藏中:

protected void myGridView_RowCommand(object sender, GridViewCommandEventArgs e)
{
    var datakey = e.CommandArgument;
    // ...
}
于 2010-08-23T03:16:19.363 回答
2

您可以将键绑定到Button的CommandArgument属性,并(sender as Button).CommandArgument在代码中使用属性

于 2010-08-23T03:14:11.567 回答