Repeater Web 伺服器控制項概觀
更新:2007 年 11 月
Repeater Web 伺服器控制項是產生個別項目清單的資料繫結容器 (Container) 控制項。您可使用範本來定義 Web 網頁上個別項目的配置。當執行網頁時,這個控制項會為資料來源中的每個項目重複配置。
這個主題包含:
背景
程式碼範例
類別參考
背景
Repeater Web 伺服器控制項是容器控制項,可允許您從網頁的任何資料建立自訂清單。Repeater 控制項沒有自己的內建呈現,表示您必須建立範本以提供 Repeater 控制項的配置。當網頁執行時,Repeater 控制項會迴圈資料來源中的資料錄,並為每個資料錄呈現一個項目。
因為 Repeater 控制項沒有預設外觀,所以您可以用來建立各種清單,其中包含下列所示:
資料表配置
以逗號分隔的清單 (例如 a, b, c, d 等)
XML 格式化清單
搭配 Repeater 控制項使用範本
若要使用 Repeater 控制項,您可以建立定義控制項內容配置的範本。範本可以包含標記和控制項的任何組合。如果未定義任何樣板或是沒有樣板是包含項目的,則當執行應用程式時,控制項不會出現在網頁上。
下表會說明 Repeater 控制項支援的樣板。
樣板屬性 |
描述 |
---|---|
包含要為資料來源中的每個資料項目,呈現一次的 HTML 項目和控制項。 |
|
包含要為資料來源中的每個其他資料項目,呈現一次的 HTML 項目和控制項。通常,這個範本是用來為替代項目建立不同的外觀,例如與 ItemTemplate 中指定顏色不同的背景顏色。 |
|
包含要在清單開頭和結尾呈現的文字和控制項。 |
|
包含要呈現在每一項目間的項目。常見的範例是一空白行 (使用 hr 項目)。 |
如需詳細資訊,請參閱 ASP.NET Web 伺服器控制項樣板。
將資料繫結至 Repeater 控制項
Repeater 控制項必須繫結至資料來源。最常見的資料來源是資料來源控制項,例如 SqlDataSource 或 ObjectDataSource 控制項。此外,您可以將 Repeater 控制項繫結至任何實作 IEnumerable 介面的類別,其中包含 ADO.NET 資料集 (DataSet 類別)、資料讀取器 (SqlDataReader 或 OleDbDataReader 類別),或是大部分集合。
當繫結資料時,您就指定了整個 Repeater 控制項的資料來源。當您將控制項加入 Repeater 控制項時,例如當您加入範本中的 Label 或 TextBox 控制項時,就會使用資料繫結語法,將個別控制項繫結至資料來源傳回的項目欄位。下列範例顯示包含資料繫結 Label 控制項的 ItemTemplate。
<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" >
<title>ASP.NET Repeater Example</title>
</head>
<body>
<form id="form1" >
<div>
<asp:Repeater ID="Repeater1" DataSourceID="SqlDataSource1">
<HeaderTemplate>
<table>
<tr>
<th>
Name</th>
<th>
Description</th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td style="background-color:#CCFFCC">
<asp:Label ID="Label1" Text='<%# Eval("CategoryName") %>' />
</td>
<td style="background-color:#CCFFCC">
<asp:Label ID="Label2" Text='<%# Eval("Description") %>' />
</td>
</tr>
</ItemTemplate>
<AlternatingItemTemplate>
<tr>
<td>
<asp:Label ID="Label3" Text='<%# Eval("CategoryName") %>' />
</td>
<td>
<asp:Label ID="Label4" Text='<%# Eval("Description") %>' />
</td>
</tr>
</AlternatingItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
<asp:SqlDataSource ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"
ID="SqlDataSource1" SelectCommand="SELECT [CategoryID], [CategoryName],
[Description] FROM [Categories]"></asp:SqlDataSource>
</div>
</form>
</body>
</html>
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" >
<title>ASP.NET Repeater Example</title>
</head>
<body>
<form id="form1" >
<div>
<asp:Repeater ID="Repeater1" DataSourceID="SqlDataSource1">
<HeaderTemplate>
<table>
<tr>
<th>
Name</th>
<th>
Description</th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td style="background-color:#CCFFCC">
<asp:Label ID="Label1" Text='<%# Eval("CategoryName") %>' />
</td>
<td style="background-color:#CCFFCC">
<asp:Label ID="Label2" Text='<%# Eval("Description") %>' />
</td>
</tr>
</ItemTemplate>
<AlternatingItemTemplate>
<tr>
<td>
<asp:Label ID="Label3" Text='<%# Eval("CategoryName") %>' />
</td>
<td>
<asp:Label ID="Label4" Text='<%# Eval("Description") %>' />
</td>
</tr>
</AlternatingItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
<asp:SqlDataSource ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"
ID="SqlDataSource1" SelectCommand="SELECT [CategoryID], [CategoryName],
[Description] FROM [Categories]"></asp:SqlDataSource>
</div>
</form>
</body>
</html>
![]() |
---|
您無法使用 Eval 資料繫結函式,繫結頁首、頁尾和分隔符號範本中的控制項。如果在這些範本中有控制項,您可以僅使用靜態方式定義其屬性。 |
如需 Web 伺服器控制項中的資料繫結概觀,請參閱逐步解說:Web 網頁中的基本資料存取和 HOW TO:將 Repeater Web 伺服器控制項加入至 Web Form 網頁。
Repeater 控制項支援的事件
Repeater 控制項支援幾個事件。其中 ItemCreated 事件讓您能夠在執行階段自訂項目建立處理序。ItemDataBound 事件也能夠讓您自訂 Repeater 控制項,但是要在資料可供檢視後才能進行。例如,如果您使用 Repeater 控制項來顯示待辦清單,便可利用紅色文字來顯示過期項目、黑色文字來顯示完成項目、綠色文字則顯示其他工作。任一事件都可用來覆寫樣板定義的格式。
ItemCommand 事件的引發,是用來回應個別項目中的按鈕按選動作。這個事件是為了讓您將 Button、LinkButton 或 ImageButton Web 伺服器控制項嵌入項目範本中,然後當按一下按鈕時會加以告知。當使用者按一下按鈕時,就會將事件傳送至按鈕的容器:Repeater 控制項。ItemCommand 事件的最常見用法是將更新及刪除行為設計至 Repeater 控制項。因為每次按鈕按選動作都會引發相同的 ItemCommand 事件,所以您可以將按鈕的 CommandName 屬性設定為唯一的字串值,以判斷所按選的按鈕。RepeaterCommandEventArgs 參數的 CommandSource 屬性包含所按選按鈕的 CommandName 屬性。
如需詳細資訊,請參閱 HOW TO:回應 DataList 或 Repeater 項目中的按鈕事件。
回到頁首
程式碼範例
HOW TO:將 Repeater Web 伺服器控制項加入至 Web Form 網頁
回到頁首
類別參考
下表列出與 Repeater 控制項相關的重要類別。
成員 |
描述 |
---|---|
控制項的主要類別。 |
回到頁首