輕量級、無預設版面的資料繫結控件。不像 GridView/DataList 有內建表格結構,**完全由開發者透過模板定義 HTML 輸出**,極度彈性,適合產生清單、導航選單、卡片式版面等非表格結構。
| 模板 | 用途 | 備註 |
|---|---|---|
| HeaderTemplate | 資料前輸出一次 (如 <table>、<ul> 開頭) | 可選 |
| ItemTemplate | 每筆資料輸出 (主要模板) | 必要 |
| AlternatingItemTemplate | 隔行資料輸出 (斑馬紋) | 可選,無則沿用 ItemTemplate |
| SeparatorTemplate | 項目間分隔 (如 <hr>、<li> 分隔) | 可選 |
| FooterTemplate | 資料後輸出一次 (閉合標籤) | 可選 |
<asp:Repeater ID="Repeater1" runat="server">
<HeaderTemplate>
<table border="1" cellpadding="0" cellspacing="0">
<tr><th>編號</th><th>真實姓名</th><th>年齡</th><th>性別</th><th>手機</th><th>電話</th><th>電子郵件</th></tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><%# Eval("UserID") %></td>
<td><%# Eval("RealName") %></td>
<td><%# Eval("Age") %></td>
<td><%# (bool)Eval("Sex") ? "男" : "<font color='green'>女</font>" %></td>
<td><%# Eval("Mobile") %></td>
<td><%# Eval("Phone") %></td>
<td><%# Eval("Email") %></td>
</tr>
</ItemTemplate>
<AlternatingItemTemplate>
<tr style="background:#f0f0f0">
<td><%# Eval("UserID") %></td>
<td><%# Eval("RealName") %></td>
<td><%# Eval("Age") %></td>
<td><%# (bool)Eval("Sex") ? "男" : "<font color='green'>女</font>" %></td>
<td><%# Eval("Mobile") %></td>
<td><%# Eval("Phone") %></td>
<td><%# Eval("Email") %></td>
</tr>
</AlternatingItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Repeater1.DataSource = UserService.GetAll();
Repeater1.DataBind();
}
}
<td><%# FormatRole(Eval("RoleId")) %></td>
<asp:Repeater ID="rptCategory" runat="server">
<ItemTemplate>
<h3><%# Eval("CategoryName") %></h3>
<asp:Repeater ID="rptProduct" runat="server"
DataSource='<%# ((DataRowView)Container.DataItem).Row.GetChildRows("CategoryProduct") %>'>
<ItemTemplate><div><%# Eval("ProductName") %></div></ItemTemplate>
</asp:Repeater>
</ItemTemplate>
</asp:Repeater>
| 特性 | Repeater | DataList | GridView |
|---|---|---|---|
| HTML 控制權 | 完全自訂 | 表格/流式版面 | 完整表格 |
| 內建分頁/排序 | 無 | 無 | 有 |
| 編輯/刪除 UI | 無 | 有 (EditItemTemplate) | 有 (CommandField) |
| ViewState 大小 | 最小 | 中 | 最大 |
| 效能 | 最佳 | 良 | 較重 |
Repeater 是「輕量、極致彈性」的資料呈現利器。雖缺乏內建編輯/分頁功能,但配合模板、巢狀繫結與 ItemDataBound 事件,能實作任何自訂版面需求。追求效能、精確控制 HTML 輸出、非表格式資料呈現時,Repeater 是首選。