确定在 GridView 中单击的行的数据表索引



我在 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

最新更新