【问题标题】:How to dynamically retrieve the column index, id and the row index of a row in gridview如何在gridview中动态检索行的列索引、id和行索引
【发布时间】:2015-08-21 13:10:02
【问题描述】:

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

【问题讨论】:

标签: c# asp.net gridview


【解决方案1】:

本文将解释如何使用 JavaScript 获取 ASP.Net GridView Row 及其 RowIndex 客户端。我还将解释如何使用 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>

【讨论】:

  • 您可能应该包含您从其中获取代码 sn-p 的link
  • 哦,我忘记了那个对不起的伙伴......但我在某个地方复制了它
  • 我在服务器端几乎没有其他事情要做,所以我想在cs页面@KeefeHiggins的服务器端做这件事
  • 是否要在单元格内找到控件以及单击的行的 ID?
  • 是的,在文件 @AsifAhmad 后面的代码中的服务器代码
【解决方案2】:

要找到行的索引,你可以简单地这样做

GridViewRow gvr = e.Row;

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

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

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

其中索引是行索引,单元格[1] 是单元格索引,即如果您的网格中有 4 个单元格,则索引从单元格 [0]... 单元格 [3] 开始。这里的 cell[1] 表示控制在你 grid 的单元格 2 中。 如果你有网格值绑定表单数据库,并且你有一些唯一的 id,比如主键也来了,你正在对数据库中的这个值执行操作,那么从 Frond 端将此属性添加到 gridview ( DatakeyNames="ur 主键或 uniqe value comming form数据库“;现在如果你有按钮或链接按钮控件(或任何其他在网格视图中引发事件的控件,那么在事件上编写此代码,它将自动为你捕获主键和行索引。

   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 

    }

希望你能得到你想要的东西

【讨论】:

  • 我遇到了一个异常:FormatException。输入字符串的格式不正确。
  • 事实上,我什至必须在运行时获取单元格索引。我有那个运行时@Asif Ahmad
  • 尝试将 Int32 更改为您的格式,即哪种格式
  • 我已经改了,没关系
  • 调试 n 检查在哪一行引发异常 n 让我知道
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-28
  • 1970-01-01
  • 2012-11-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多