Добавить ID в строку GridView

как добавить ID в строки GridView (идентификаторы должны быть отображены)?

Я использую .NET (C#). У меня есть контроль GridView.

у меня есть некоторые функции javascript, которые управляют строками таблицы, но для этих строк необходимо иметь идентификаторы:

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

мой GridView генерируется из данных из базы данных. Важно не иметь поддельных идентификаторов строк, а действительно идентификаторы строк из БД (есть функция ajax javascript, которая обновляет БД на основе этих идентификаторов и пользователя манипуляции со столом).

часть моего 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.Гребите.ID правильное значение, но это не отображает этот ID.

Итак, как отобразить идентификаторы из базы данных для строк в GridView?

3 ответов


попробовать следующее....

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


      }
 } 

самый простой способ-использовать скрытое поле, к которому вы можете получить доступ с клиентской и серверной стороны.

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

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