将ID添加到GridView Row

时间:2012-10-18 09:39:47

标签: asp.net

如何向GridView行添加ID(应该呈现ID)?

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

我有一些操作表行的javascript函数,但是必须为这些行设置ID:

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

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

我的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中从DataBase for Rows渲染ID?

3 个答案:

答案 0 :(得分:18)

尝试以下....

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();


      }
 } 

答案 1 :(得分:1)

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

<Columns>
      <asp:TemplateField >
           <ItemTemplate>
               <asp:HiddenField ID="HiddenID" runat="server" Value='<%#Eval("ID") %>' />
           </ItemTemplate>
      </asp:TemplateField>
      ....
</Columns>

答案 2 :(得分: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