共用方式為


建立 DetailsView Web 伺服器控制項中的自訂資料列

更新:2007 年 11 月

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

建立樣板

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

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

樣板中的資料繫結

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

範例

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

<Fields>                  
  <asp:BoundField DataField="EmployeeID" HeaderText="Employee ID" InsertVisible="False" 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>
    <InsertItemTemplate>
      <asp:Calendar ID="InsertBirthDateCalendar" Runat="Server"
                    SelectedDate='<%# Bind("BirthDate") %>' />
    </InsertItemTemplate>
    <EditItemTemplate>
      <asp:Calendar ID="EditBirthDateCalendar" Runat="Server"
                    VisibleDate='<%# Eval("BirthDate") %>'
                    SelectedDate='<%# Bind("BirthDate") %>' />
    </EditItemTemplate>
  </asp:TemplateField>                    
</Fields> 
<Fields>                  
  <asp:BoundField DataField="EmployeeID" HeaderText="Employee ID" InsertVisible="False" 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>
    <InsertItemTemplate>
      <asp:Calendar ID="InsertBirthDateCalendar" Runat="Server"
                    SelectedDate='<%# Bind("BirthDate") %>' />
    </InsertItemTemplate>
    <EditItemTemplate>
      <asp:Calendar ID="EditBirthDateCalendar" Runat="Server"
                    VisibleDate='<%# Eval("BirthDate") %>'
                    SelectedDate='<%# Bind("BirthDate") %>' />
    </EditItemTemplate>
  </asp:TemplateField>                    
</Fields> 

請參閱

概念

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

資料來源控制項概觀

參考

DetailsView Web 伺服器控制項概觀