如何动态检索gridview中一行的列索引、id和行索引

本文关键字:索引 一行 id 何动态 动态 检索 gridview | 更新日期: 2023-09-27 18:09:08

我有一个动态创建的grdview与4列和n行数。每列有一个Button控制与不同的Id。控件有一个Click事件。当事件触发时,我想在运行时找到该按钮的row索引和cell索引或Id

如何动态检索gridview中一行的列索引、id和行索引

在这篇文章中将解释如何获得ASP。Net gridviewrow及其RowIndex客户端使用JavaScript。我还将解释如何使用JavaScript在GridView模板字段客户端找到GridView单元格和控件。

    <html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script type = "text/javascript">
        function GetSelectedRow(lnk) {
            var row = lnk.parentNode.parentNode;
            var rowIndex = row.rowIndex - 1;
            var customerId = row.cells[0].innerHTML;
            var city = row.cells[1].getElementsByTagName("input")[0].value;
            alert("RowIndex: " + rowIndex + " CustomerId: " + customerId + " City:" + city);
            return false;
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <asp:GridView ID="gvCustomers" runat="server" AutoGenerateColumns = "false" AllowPaging = "true" OnPageIndexChanging = "PageIndexChanging">
        <Columns>
        <asp:BoundField DataField = "CustomerID" HeaderText = "CustomerID" />
        <asp:TemplateField HeaderText = "City">
            <ItemTemplate>
                <asp:TextBox ID="txtCity" runat="server" Text = '<%# Eval("City") %>'></asp:TextBox>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField>
            <ItemTemplate>
                <asp:LinkButton ID="lnkSelect" runat="server" Text="Select" CommandName = "Select" OnClientClick = "return GetSelectedRow(this)" />
            </ItemTemplate>
        </asp:TemplateField>
        </Columns>
    </asp:GridView>
    </form>
</body>
</html>

查找行索引,只需执行以下操作

GridViewRow gvr = e.Row;

int index = Convert.ToInt32(e.RowIndex);

和查找控件的值,例如文本框的文本,你可以这样做

Label lb_ID = (TextBox)GridInvoice.Rows[index].Cells[1].FindControl("Label_ID");

其中index是行索引,cell[1]是cell索引,即如果你的网格中有4个cell,那么index从cell[0]开始…细胞[3]。这里单元格[1]表示控制在网格的单元格2中。如果你有网格值绑定表单数据库,你有一些唯一的id,如主键到来,你也在数据库中执行这个值的操作,然后从前端添加这个属性到gridview (DatakeyNames="我们的主键或唯一值来自数据库";现在,如果你有按钮或链接按钮控件(或任何其他控件在网格视图中引发事件),那么在事件上编写这段代码,它将自动捕获u的主键和行索引。

   protected void lnkbtnEdit_Click(object sender, EventArgs e)
    {
        GridViewRow gvrows = ((LinkButton)sender).NamingContainer as GridViewRow;
      int32  Key = (Convert.ToInt32(grvCityList.DataKeys[gvrows.RowIndex].Values[0].ToString()));
Now do ur logic here 
    }

希望你能得到你想要的