2012-10-18 4 views
4

GridView 행에 ID를 추가하는 방법 (ID를 렌더링해야 함)?GridView 행에 ID 추가

.NET (C#)을 사용하고 있습니다. GridView 컨트롤이 있습니다.

나는 테이블 행을 조작하는 일부 자바 스크립트 기능을 가지고 있지만, 그 행에 대한 ID가 필요하다 :

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

내의 GridView가 데이터베이스에서 데이터에서 genereted된다. 가짜 행 IDS가 아니라 DB에서 실제로 행 ID를 가져 오는 것이 중요합니다 (테이블을 사용하여 이러한 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을 제공하지만, 문제는이 렌더링하지 않습니다 신분증.

그래서 GridView에서 행에 대한 DataBase에서 ID를 렌더링하는 방법은 무엇입니까? 다음

+0

그냥 행의 인덱스를 지정하려면, 당신은 왜 속성으로 할당해야합니까? clientside에서 테이블의 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 
관련 문제