在 .aspx 頁面中,以宣告式語法為資料繫結控制項 (DataList、Repeater、GridView) 定義模板,包含 ItemTemplate、HeaderTemplate、SeparatorTemplate 等,並支援資料繫結運算式 (<%# ... %>) 與嵌入控制項。
<asp:DataList ID="DataList1" runat="server">
<ItemTemplate>
<!-- 模板內容 -->
</ItemTemplate>
</asp:DataList>
<ItemTemplate>
Name: <asp:Label runat="server" Text='<%# Container.DataItem %>' />
</ItemTemplate>
<asp:DataList ID="DataList1" runat="server">
<HeaderTemplate>
符合查詢的項目:
</HeaderTemplate>
<ItemTemplate>
Name: <asp:Label ID="Label1" runat="server"
Text='<%# DataBinder.Eval(Container, "DataItem.EmployeeName") %>'>
</asp:Label>
</ItemTemplate>
<SeparatorTemplate>
<br><hr>
</SeparatorTemplate>
</asp:DataList>
| 模板 | 用途 |
|---|---|
| HeaderTemplate | 資料列表前的標題區 |
| ItemTemplate | 每一筆資料的呈現 (必要) |
| AlternatingItemTemplate | 交替項目樣式 (如斑馬紋) |
| SeparatorTemplate | 項目間分隔符 |
| FooterTemplate | 資料列表後的尾部區 |
| EditItemTemplate | 編輯模式下的呈現 |
| SelectedItemTemplate | 選取項目突顯 |
若設計介面顯示灰色框與「建立控制項時出錯」,通常為語法錯誤:
- 遺漏 runat="server"
- 標籤未正確閉合
- 資料繫結運算式語法錯誤
滑鼠懸停錯誤圖示可見詳細訊息。
<%# ((Employee)Container.DataItem).Name %>) 取代 DataBinder.Eval 提升效能。UserControl (.ascx),再於模板中引用 <uc:MyTemplate runat="server" />。Container 屬性提供 DataItem、ItemIndex 等上下文資訊。