我在 ASP.NET 页面中有一个网格视图。网格视图绑定到数据集/数据选项卡。 网格的一列是一个命令按钮,网格视图指定了方法OnRowCommand(例如OnRowCommand="GridView_RowCommand")。
当用户单击网格中的按钮时,将触发方法GridView_RowCommand。 我想找到单击按钮的行的数据表索引。请注意,我不是在寻找 GridView 行的索引,而是要查找绑定到 GridView 的数据表的索引。
提前感谢您的帮助。
您有几个选项,这取决于要绑定到 gridview 的数据量,您可以在绑定时将数据集/数据表保存到 Session["],也可以在拥有行的唯一 ID 后再次从数据库中检索数据。 您可以在网格视图上创建以下内容:
<asp:GridView ID="gvCustomer" runat="server"
AutoGenerateColumns="False" DataKeyNames="yourId" onrowcommand="gvCustomer_RowCommand">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="lnkAction" runat="server" Text="Do Something" CommandName="yourEvent" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
然后在 RowCommand 事件的代码后面有:
protected void gvCustomer_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "yourEvent")
{
var row = (GridViewRow)((LinkButton)e.CommandSource).NamingContainer;
int rowId = Convert.ToInt32(gvCustomer.DataKeys[row.RowIndex]["yourId"]);
}
}
此时,您拥有的 id 可以再次查询数据库或在绑定到 gridview 之前访问保存到会话中的数据源对象
或者另一种选择是:
<asp:LinkButton CommandArgument='<%#Eval("PrimaryKey")%>' />
然后你可以在gvCustomer_RowCommand方法中使用 e.CommandArgument 获取 arg