当我在一行中有一个具有OnClick事件的按钮时,如何获取GridView Row的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?
}
答案 0 :(得分:5)
当我使用GridView时,我通常不会将OnClick
事件用于按钮。相反,我在GridView上使用OnRowCommand
事件,并将数据绑定到按钮的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;
// ...
}
答案 1 :(得分:2)
您可以将键绑定到Button的CommandArgument属性,并在代码中使用(sender as Button).CommandArgument
属性