共用方式為


建立 GridView Web 伺服器控制項中的自訂資料行

更新:2007 年 11 月

GridView 控制項能夠從資料來源提供的欄位自動產生資料行。此外,您也可以建立要顯示的資料行集合,而不是自動產生資料行。但是,您可能會遇到需要自訂如何顯示個別資料行的情況。在這種情況下,您可以建立 TemplateField 指定自訂資料行配置。

建立樣板

TemplateField 物件能夠讓您指定包含標記和控制項的樣板,以自訂 GridView 控制項中資料行配置與行為。當 GridView 控制項顯示資料行中的資料時,您可以使用 ItemTemplate 指定要使用的配置。當使用者編輯資料行中的資料時,若要指定自訂配置,您可以建立 EditItemTemplate

您的樣板可以包含標記、Web 伺服器控制項和命令按鈕。如需範本的詳細資訊,請參閱 ASP.NET Web 伺服器控制項樣板

樣板中的資料繫結

在樣板中,您可以使用 Eval 和 Bind 方法將控制項繫結至資料。當控制項只會顯示值時,可以使用 Eval 方法。當使用者能夠修改資料值 (也就是資料更新案例) 時,您可以使用 Bind 方法。您可以使用任何樣板中的 Eval 方法顯示資料。您可以在使用者會變更控制項值 (例如 TextBoxCheckBox 控制項) 的樣板,或是允許刪除記錄的樣板中使用 Bind 方法。如需詳細資訊,請參閱資料繫結運算式概觀

範例

下列程式碼範例示範 GridView 控制項的 Columns 集合。集合中包含 TemplateField 物件,而物件中又包含 ItemTemplate 物件。若要顯示日期,ItemTemplate 會包含使用 Eval 方法的 Label 控制項。若要編輯日期,其他樣板會使用 Calendar 控制項,而這個控制項會使用 Bind 方法。

<Columns>                  
  <asp:BoundField DataField="EmployeeID" HeaderText="Employee ID" ReadOnly="true"/>                    
  <asp:BoundField DataField="FirstName"  HeaderText="First Name"/>
  <asp:BoundField DataField="LastName"   HeaderText="Last Name"/>                    
  <asp:TemplateField HeaderText="Birth Date">
    <ItemTemplate> 
      <asp:Label ID="BirthDateLabel" Runat="Server" 
                 Text='<%# Eval("BirthDate", "{0:d}") %>' />
    </ItemTemplate>
    <EditItemTemplate>
      <asp:Calendar ID="EditBirthDateCalendar" Runat="Server"
                    VisibleDate='<%# Eval("BirthDate") %>'
                    SelectedDate='<%# Bind("BirthDate") %>' />
    </EditItemTemplate>
  </asp:TemplateField>   
  <asp:HyperLinkField Text="Show Detail"
                      DatahrefFormatString="~/ShowEmployeeDetail.aspx?EmployeeID={0}"
                      DatahrefFields="EmployeeID" />                   
</Columns> 
<Columns>                  
  <asp:BoundField DataField="EmployeeID" HeaderText="Employee ID" ReadOnly="true"/>                    
  <asp:BoundField DataField="FirstName"  HeaderText="First Name"/>
  <asp:BoundField DataField="LastName"   HeaderText="Last Name"/>                    
  <asp:TemplateField HeaderText="Birth Date">
    <ItemTemplate> 
      <asp:Label ID="BirthDateLabel" Runat="Server" 
                 Text='<%# Eval("BirthDate", "{0:d}") %>' />
    </ItemTemplate>
    <EditItemTemplate>
      <asp:Calendar ID="EditBirthDateCalendar" Runat="Server"
                    VisibleDate='<%# Eval("BirthDate") %>'
                    SelectedDate='<%# Bind("BirthDate") %>' />
    </EditItemTemplate>
  </asp:TemplateField> 
  <asp:HyperLinkField Text="Show Detail"
                      DatahrefFormatString="~/ShowEmployeeDetail.aspx?EmployeeID={0}"
                      DatahrefFields="EmployeeID" />                   
</Columns> 

請參閱

概念

ASP.NET 資料繫結 Web 伺服器控制項概觀

資料來源控制項概觀

參考

GridView Web 伺服器控制項概觀