9

GridView 行に ID を追加する方法 (ID をレンダリングする必要があります)?

.NET (C#) を使用しています。GridView コントロールがあります。

テーブルの行を操作する JavaScript 関数がいくつかありますが、それらの行の ID が必要です。

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

私の GridView は、DataBase の Data から生成されます。FAKE ROW IDS ではなく、実際に DB からの行 ID を使用することが重要です (これらの ID とテーブルを使用したユーザー操作に基づいて DB を更新する 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.Row.ID に正しい値を与えますが、これはこの ID をレンダリングしません。

では、GridView で行の DataBase から 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 に答える