0

我在 ASP.NET 页面中有一个 GridView。GridView 绑定到数据集/数据表。网格的其中一列是命令按钮,并且网格视图指定了方法 OnRowCommand(例如 OnRowCommand="GridView_RowCommand")。

当用户单击网格中的按钮时,GridView_RowCommand 方法会触发。我想找到单击按钮所在行的 DataTable 的索引。请注意,我不是在寻找 GridView 行的索引,而是寻找绑定到 GridView 的 DataTable 的索引。

预先感谢您的帮助。

4

1 回答 1

1

您有几个选项,这取决于您绑定到 gridview 的数据量,一个您可以在绑定时将数据集/数据表保存到 Session[""] 或者您可以在拥有后再次从数据库中检索数据行的唯一 ID。您可以在 gridview 上创建以下内容:

   <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"]);
            }
    }

此时,您拥有可以再次查询数据库或访问在绑定到 gridview 之前保存到会话中的数据源对象的 id

或者另一种选择是:

<asp:LinkButton CommandArgument='<%#Eval("PrimaryKey")%>' />

然后您可以在 gvCustomer_RowCommand 方法中使用 e.CommandArgument 获取 arg

于 2013-10-22T22:12:30.240 回答