2012-10-18 170 views
4

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

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

我有一个正在操纵表行一些JavaScript的功能,但它必须有ID的那些行:

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

我的GridView控件从数据从数据库genereted。重要的是不要使用FAKE ROW IDS,而是真正从数据库中创建行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中的ID?

+0

如果你只是想指定行的索引,为什么你需要将其分配财产?您也可以从客户端访问表格的第n行。 –

回答

14

尝试以下....

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

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

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

我不想重写现有的js函数,但它们已经与一起使用,而不是隐藏字段。这可能是一个选择,如果上述答案不起作用,但它确实如此。 – renathy

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