Asp.net

將 ID 添加到 GridView 行

  • November 21, 2021

如何將 ID 添加到 GridView 行(應呈現 ID)?

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

我有一些處理表行的 javascript 函式,但必須有這些行的 ID:

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

我的 GridView 是從數據庫中的數據生成的。重要的是不要有 FAKE ROW IDS,而是真正來自 DB 的行 id(有一些 ajax javascript 函式可以根據這些 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 提供了正確的值,但這不會呈現此 ID。

那麼,如何從數據庫中為 GridView 中的行渲染 ID?

嘗試跟隨….

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>

引用自:https://stackoverflow.com/questions/12951618