更新:2007 年 11 月
藉由對清單中每一項目重複指定之樣板的方式,建立可自訂配置的資料繫結清單控制項。
<asp:Repeater
DataMember="string"
DataSource="string"
DataSourceID="string"
EnableTheming="True|False"
EnableViewState="True|False"
ID="string"
OnDataBinding="DataBinding event handler"
OnDisposed="Disposed event handler"
OnInit="Init event handler"
OnItemCommand="ItemCommand event handler"
OnItemCreated="ItemCreated event handler"
OnItemDataBound="ItemDataBound event handler"
OnLoad="Load event handler"
OnPreRender="PreRender event handler"
OnUnload="Unload event handler"
runat="server"
Visible="True|False"
>
<AlternatingItemTemplate>
<!-- child controls -->
</AlternatingItemTemplate>
<FooterTemplate>
<!-- child controls -->
</FooterTemplate>
<HeaderTemplate>
<!-- child controls -->
</HeaderTemplate>
<ItemTemplate>
<!-- child controls -->
</ItemTemplate>
<SeparatorTemplate>
<!-- child controls -->
</SeparatorTemplate>
</asp:Repeater>
備註
使用 Repeater 控制項建立基礎樣板資料繫結清單。Repeater 控制項沒有內建的配置或樣式,您必須明確地宣告控制項樣板內的所有 HTML 配置、格式和樣式標記。
Repeater 控制項與其他資料清單控制項不同,它可以讓您將 HTML 片段置於它的樣板中。這樣將可讓您建立像是資料表之類的複雜 HTML 結構。例如,若要在 HTML 表格內建立清單,請將 <table> 標記置於 HeaderTemplate 中來開始此表格。接下來,請將 <tr> 標記、<td> 標記和資料繫結項目置於 ItemTemplate 中來建立表格的列和欄。如果您希望表格中的替代項目有不同的外觀,除了指定的不同樣式之外,請用與 ItemTemplate 相同的內容建立 AlternatingItemTemplate。最後,請將 </table> 標記置於 FooterTemplate 中來完成表格。
下表所列是 Repeater 控制項的不同樣板。
樣板 |
說明 |
||
|---|---|---|---|
類似 ItemTemplate 項目,但是在 Repeater 控制項中是以每隔一列 (替代項目) 的方式呈現。您也可以設定 AlternatingItemTemplate 項目的樣式屬性將不同的外觀指定給它。 |
|||
要在所有資料繫結資料列都呈現之後,才會呈現一次的項目。典型的運用是用來結束在 HeaderTemplate 項目中開始的項目 (使用如 </table> 之類的標記)。
|
|||
要在所有資料繫結資料列呈現之前呈現一次的項目。典型的運用是用來開始容器項目 (例如資料表)。
|
|||
為資料來源中每個資料列呈現一次的項目。若要在 ItemTemplate 中顯示資料,請宣告一個或多個 Web 伺服器控制項,並且將它們的資料繫結運算式設定成評估 Repeater 控制項的 (亦即容器控制項的) DataSource 中的欄位。下列範例所示為顯示 Label 控制項中含有姓氏之欄位的範例宣告。 |
|||
要呈現於各資料列間的項目,通常為分行符號 ((<br> 標記)、水平線 ((<hr> 標記) 等。
|
Repeater 控制項沒有內建的選取或編輯支援。您可以為控制項的 ItemCommand 事件建立處理常式,處理從樣板傳送至控制項的控制項事件。
控制項將它的 Item 和 AlternatingItem 樣板繫結至控制項的 DataSource 或 DataSourceID 屬性所參考的資料結構 (Header, Footer 和 Separator 樣板無法繫結至資料)。如果 Repeater 控制項的 DataSource 屬性已設定,但是未傳回資料,則控制項會呈現 Header 和 Footer 樣板,但是其中沒有項目。如果沒有設定 DataSource 屬性,Repeater 控制項將不會呈現。
警告: |
|---|
尚未顯示於 Repeater 控制項中的文字,便還未經過 HTML 編碼。這樣便可以在文字中的 HTML 標記內嵌入指令碼。如果控制項的值來自使用者輸入,請務必驗證值來協助防止安全性的弱點。 |
如需 Repeater Web 伺服器控制項之屬性和事件的詳細資訊,請參閱 Repeater 類別文件。
範例
下列程式碼範例將示範如何使用 DataSourceID 屬性,指定 Repeater 控制項的資料來源。DataSourceID 屬性設定為用來擷取資料之 SqlDataSource 控制項的 ID 屬性。當網頁載入時,Repeater 控制項會自動繫結至 SqlDataSource 控制項所指定的資料來源,並向使用者顯示資料。
<%@ 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>
<title>Repeater.DataSourceID Property Example</title>
</head>
<body>
<form id="Form1" runat="server">
<h3>Repeater.DataSourceID Property Example</h3>
<asp:repeater id="Repeater1"
datasourceid="SqlDataSource1"
runat="server">
<headertemplate>
<table border="1">
<tr>
<td><b>Product ID</b></td>
<td><b>Product Name</b></td>
</tr>
</headertemplate>
<itemtemplate>
<tr>
<td> <%# Eval("ProductID") %> </td>
<td> <%# Eval("ProductName") %> </td>
</tr>
</itemtemplate>
<footertemplate>
</table>
</footertemplate>
</asp:repeater>
<asp:sqldatasource id="SqlDataSource1"
connectionstring="<%$ ConnectionStrings:NorthWindConnection%>"
selectcommand="SELECT ProductID, ProductName FROM [Products] Where ProductID <= 10"
runat="server">
</asp:sqldatasource>
</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>
<title>Repeater.DataSourceID Property Example</title>
</head>
<body>
<form id="Form1" runat="server">
<h3>Repeater.DataSourceID Property Example</h3>
<asp:repeater id="Repeater1"
datasourceid="SqlDataSource1"
runat="server">
<headertemplate>
<table border="1">
<tr>
<td><b>Product ID</b></td>
<td><b>Product Name</b></td>
</tr>
</headertemplate>
<itemtemplate>
<tr>
<td> <%# Eval("ProductID") %> </td>
<td> <%# Eval("ProductName") %> </td>
</tr>
</itemtemplate>
<footertemplate>
</table>
</footertemplate>
</asp:repeater>
<asp:sqldatasource id="SqlDataSource1"
connectionstring="<%$ ConnectionStrings:NorthWindConnection%>"
selectcommand="SELECT ProductID, ProductName FROM [Products] Where ProductID <= 10"
runat="server">
</asp:sqldatasource>
</form>
</body>
</html>
注意事項:
警告: