当我有一个具有OnClick事件的行内的按钮时,如何获取GridView行的DataKeyName的值.在我的按钮的OnClick事件中,我想获得按钮所在行的DataKeyName. 这可能吗? asp:GridView ID="myGridView" run="server" Colu
这可能吗?
<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? }当我使用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; // ... }