9

如何将 ID 添加到 GridView 行(应呈现 ID)?

我正在使用 .NET (C#)。我有 GridView 控件。

我有一些处理表行的 javascript 函数,但必须有这些行的 ID:

<table>
    <tr id=1> ...  
    <tr id=2> ...  //id should come from database
..

我的 GridView 是从数据库中的数据生成的。重要的是不要有 FAKE ROW IDS,而是真正来自 DB 的行 id(有一些 ajax javascript 函数可以根据这些 ID 和用户对表的操作来更新 DB)。

我的 GridView 的一部分如下:

  <asp:GridView ID="grdNews" runat="server" BorderStyle="None" RowStyle-BorderStyle="None"
                GridLines="None" CssClass="table" Style="white-space: nowrap" AutoGenerateColumns="False"
                DataKeyNames="ID" AllowSorting="True" AllowPaging="true" OnSorting="grdNews_Sorting" OnRowDataBound="grdNews_RowDataBound">
                <RowStyle BorderStyle="None" />
                <HeaderStyle CssClass="nodrag" />
                <Columns>
                ....

我尝试了以下方法:

 protected void grdNews_RowDataBound(object sender, GridViewRowEventArgs e)
{
     if (e.Row.RowType == DataControlRowType.DataRow)
     {
         e.Row.ID = grdNews.DataKeys[e.Row.RowIndex].Value.ToString();
     }
}

这为 e.Row.ID 提供了正确的值,但这不会呈现此 ID。

那么,如何从数据库中为 GridView 中的行渲染 ID?

4

4 回答 4

19

尝试跟随....

protected void grdNews_RowDataBound(object sender, GridViewRowEventArgs e)
 {
      if (e.Row.RowType == DataControlRowType.DataRow)
      {
        GridViewRow row = e.Row;
        row.Attributes["id"] =grdNews.DataKeys[e.Row.RowIndex].Value.ToString();


      }
 } 
于 2012-10-18T09:46:14.163 回答
2

最简单的方法是使用可以从客户端和服务器端访问的隐藏字段。

<Columns>
      <asp:TemplateField >
           <ItemTemplate>
               <asp:HiddenField ID="HiddenID" runat="server" Value='<%#Eval("ID") %>' />
           </ItemTemplate>
      </asp:TemplateField>
      ....
</Columns>
于 2012-10-18T09:46:36.890 回答
0

VB.net代码

  Private Sub gvPayments_RowDataBound(ByVal sender As Object, ByVal e As     System.Web.UI.WebControls.GridViewRowEventArgs) Handles gvPayments.RowDataBound

    Dim counter As Integer = 0

    For Each oItem As GridViewRow In gvPayments.Rows

        counter += 1
        oItem.Cells(1).Text = counter.ToString()
        oItem.Attributes("id") = "tr_" + counter.ToString

    Next



End Sub
于 2014-05-25T01:55:54.073 回答
0

确保:

  1. 您在 IsPOstback 事件之外调用数据库绑定函数。

  2. 您没有在网格定义中提到您的 RowDatabound 事件签名

于 2021-11-21T19:06:36.593 回答