Repeater 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
資料繫結清單控制項,允許自訂版面配置,方法是在清單中為所顯示的每個項目重複指定的範本。
public ref class Repeater : System::Web::UI::Control, System::Web::UI::INamingContainer
public class Repeater : System.Web.UI.Control, System.Web.UI.INamingContainer
type Repeater = class
inherit Control
interface INamingContainer
Public Class Repeater
Inherits Control
Implements INamingContainer
- 繼承
- 衍生
- 實作
範例
有原始程式碼的 Visual Studio 網站專案可隨附本主題: 下載。
下列程式碼範例示範如何在頁面上使用兩個簡單 Repeater 控制項。 屬性 DataSource 是用來指定 控制項的 Repeater 資料來源。 第一個 Repeater 會在資料表中顯示其專案;第二個 Repeater 則會在逗號分隔清單中顯示其專案。
<%@ Page Language="C#" AutoEventWireup="True" %>
<!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 Example</title>
<script language="C#" runat="server">
void Page_Load(Object Sender, EventArgs e) {
if (!IsPostBack) {
ArrayList values = new ArrayList();
values.Add(new PositionData("Microsoft", "Msft"));
values.Add(new PositionData("Intel", "Intc"));
values.Add(new PositionData("Dell", "Dell"));
Repeater1.DataSource = values;
Repeater1.DataBind();
Repeater2.DataSource = values;
Repeater2.DataBind();
}
}
public class PositionData {
private string name;
private string ticker;
public PositionData(string name, string ticker) {
this.name = name;
this.ticker = ticker;
}
public string Name {
get {
return name;
}
}
public string Ticker {
get {
return ticker;
}
}
}
</script>
</head>
<body>
<h3>Repeater Example</h3>
<form id="form1" runat="server">
<b>Repeater1:</b>
<br />
<asp:Repeater id="Repeater1" runat="server">
<HeaderTemplate>
<table border="1">
<tr>
<td><b>Company</b></td>
<td><b>Symbol</b></td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td> <%# DataBinder.Eval(Container.DataItem, "Name") %> </td>
<td> <%# DataBinder.Eval(Container.DataItem, "Ticker") %> </td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
<br />
<b>Repeater2:</b>
<br />
<asp:Repeater id="Repeater2" runat="server">
<HeaderTemplate>
Company data:
</HeaderTemplate>
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, "Name") %> (<%# DataBinder.Eval(Container.DataItem, "Ticker") %>)
</ItemTemplate>
<SeparatorTemplate>, </SeparatorTemplate>
</asp:Repeater>
</form>
</body>
</html>
<%@ Page Language="VB" AutoEventWireup="True" %>
<!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 Example</title>
<script language="VB" runat="server">
Sub Page_Load(Sender As Object, e As EventArgs)
If Not IsPostBack Then
Dim values As New ArrayList()
values.Add(New PositionData("Microsoft", "Msft"))
values.Add(New PositionData("Intel", "Intc"))
values.Add(New PositionData("Dell", "Dell"))
Repeater1.DataSource = values
Repeater1.DataBind()
Repeater2.DataSource = values
Repeater2.DataBind()
End If
End Sub
Public Class PositionData
Private myName As String
Private myTicker As String
Public Sub New(newName As String, newTicker As String)
Me.myName = newName
Me.myTicker = newTicker
End Sub
Public ReadOnly Property Name() As String
Get
Return myName
End Get
End Property
Public ReadOnly Property Ticker() As String
Get
Return myTicker
End Get
End Property
End Class
</script>
</head>
<body>
<h3>Repeater Example</h3>
<form id="form1" runat="server">
<b>Repeater1:</b>
<br />
<asp:Repeater id="Repeater1" runat="server">
<HeaderTemplate>
<table border="1">
<tr>
<td><b>Company</b></td>
<td><b>Symbol</b></td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td> <%# DataBinder.Eval(Container.DataItem, "Name") %> </td>
<td> <%# DataBinder.Eval(Container.DataItem, "Ticker") %> </td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
<br />
<b>Repeater2:</b>
<br />
<asp:Repeater id="Repeater2" runat="server">
<HeaderTemplate>
Company data:
</HeaderTemplate>
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, "Name") %> (<%# DataBinder.Eval(Container.DataItem, "Ticker") %>)
</ItemTemplate>
<SeparatorTemplate>, </SeparatorTemplate>
</asp:Repeater>
</form>
</body>
</html>
下列程式碼範例示範如何使用 DataSourceID 屬性來指定 控制項的 Repeater 資料來源。 屬性 DataSourceID 會設定為 ID 用來擷取資料之控制項的 SqlDataSource 屬性。 載入頁面時, Repeater 控制項會自動系結至控制項指定的 SqlDataSource 資料來源,並將資料顯示給使用者。
<%@ 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>
<%@ 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>
備註
本主題內容:
簡介
控制項 Repeater 是基本的樣板化資料系結清單。 它沒有內建的版面配置或樣式,因此您必須在控制項的範本內明確宣告所有版面配置、格式設定和樣式標籤。
控制項 Repeater 可讓您跨範本分割標記標記。 若要使用範本建立資料表,請在 中加入開始資料表標記 () <table>
、單一資料表資料列標籤 (ItemTemplate<tr>
) ,以及 中的結束資料表標記 (</table>
) FooterTemplate 。 HeaderTemplate
控制項 Repeater 沒有內建的選取功能或編輯支援。 您可以使用 ItemCommand 事件來處理從範本引發至 控制項的控制項事件。
警告
此控制項可用來顯示使用者輸入,其中可能包含惡意用戶端腳本。 檢查從用戶端傳送的任何資訊,以取得可執行腳本、SQL 語句或其他程式碼,再將其顯示在應用程式中。 ASP.NET 提供輸入要求驗證功能,以封鎖使用者輸入中的腳本和 HTML。 也會提供驗證服務器控制項來評估使用者輸入。 如需詳細資訊,請參閱 驗證服務器控制項語法。
資料繫結
控制項 Repeater 提供兩個屬性來支援資料系結。 若要將資料系結至實作 System.Collections.IEnumerable 介面 (的任何集合,例如 System.Data.DataView 、 System.Collections.ArrayList 或陣列) 或 IListSource 介面,請使用 DataSource 屬性來指定資料來源。 當您設定 屬性時 DataSource ,必須手動撰寫程式碼來執行資料系結。 若要自動將 Repeater 控制項系結至資料來源控制項所代表的資料來源,請將 DataSourceID 屬性 ID 設定為要使用的資料來源控制項的 。 當您設定 屬性時 DataSourceID , Repeater 控制項會在第一個要求上自動系結至指定的資料來源控制項。 因此,除非您已變更控制項的資料相關屬性 Repeater ,否則不需要明確呼叫 DataBind 方法。
控制項 Repeater 會將其 ItemTemplate 和 AlternatingItemTemplate 系結至其 DataSource 屬性所宣告和參考的資料模型,或其 屬性所 DataSourceID 指定的資料來源控制項。 HeaderTemplate、 FooterTemplate 和 SeparatorTemplate 不是資料系結。
Repeater如果控制項的資料來源已設定,但未傳回任何資料,控制項就會 HeaderTemplate 轉譯 ,而且 FooterTemplate 沒有專案。 如果資料來源為 null
, Repeater 則不會轉譯 。
範本
每個 Repeater 控制項至少都必須定義 ItemTemplate 。 不過,下表所述的其他選擇性範本可用來自訂清單的外觀。
範本名稱 | 描述 |
---|---|
ItemTemplate | 定義清單內專案的內容和配置。 此範本是必要的。 |
AlternatingItemTemplate | 如果已定義,則決定交替 (以零起始的奇數索引) 專案的內容和版面配置。 如果未定義, ItemTemplate 則會使用 。 |
SeparatorTemplate | 如果已定義,則會在專案 (與替代專案之間轉譯) 。 如果未定義,則不會轉譯分隔符號。 |
HeaderTemplate | 如果已定義,則決定清單標頭的內容和配置。 如果未定義,則不會轉譯標頭。 |
FooterTemplate | 如果已定義,則決定清單頁尾的內容和版面配置。 如果未定義,則不會轉譯頁尾。 |
宣告式語法
<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 類別的新執行個體。 |
屬性
Adapter |
針對控制項取得瀏覽器的特定配置器。 (繼承來源 Control) |
AlternatingItemTemplate |
取得或設定實作 ITemplate 的物件,其定義如何顯示控制項中的替代項目。 |
AppRelativeTemplateSourceDirectory |
取得或設定包含了此控制項之 Page 或 UserControl 物件的相對應用程式虛擬目錄。 (繼承來源 Control) |
BindingContainer |
取得包含了此控制項之資料繫結的控制項。 (繼承來源 Control) |
ChildControlsCreated |
取得值,指出是否已經建立伺服器控制項的子控制項。 (繼承來源 Control) |
ClientID |
取得 ASP.NET 所產生之 HTML 標記的控制項識別碼。 (繼承來源 Control) |
ClientIDMode |
取得或設定用來產生 ClientID 屬性值的演算法。 (繼承來源 Control) |
ClientIDSeparator |
取得字元值,表示在 ClientID 屬性中所使用的分隔字元。 (繼承來源 Control) |
Context |
取得與目前 Web 要求的伺服器控制項關聯的 HttpContext 物件。 (繼承來源 Control) |
Controls |
取得 ControlCollection,其中包含 Repeater 控制項的子控制項。 |
DataItemContainer |
如果命名容器實作 IDataItemContainer,則取得命名容器的參考。 (繼承來源 Control) |
DataKeysContainer |
如果命名容器實作 IDataKeysControl,則取得命名容器的參考。 (繼承來源 Control) |
DataMember |
取得或設定 DataSource 中要繫結至控制項的特定表格。 |
DataSource |
取得或設定提供資料以填入 (Populate) 清單的資料來源。 |
DataSourceID | |
DesignMode |
取得值,指出控制項是否正用於設計介面上。 (繼承來源 Control) |
EnableTheming |
取得或設定值,指出主題是否套用至此控制項。 |
EnableTheming |
取得或設定值,指出佈景主題是否套用至此控制項。 (繼承來源 Control) |
EnableViewState |
取得或設定值,該值表示伺服器控制項是否對要求的用戶端而言保持其檢視狀態,以及它包含的任何子控制項狀態。 (繼承來源 Control) |
Events |
取得控制項事件處理常式委派 (Delegate) 的清單。 這個屬性是唯讀的。 (繼承來源 Control) |
FooterTemplate | |
HasChildViewState |
取得值,指出目前伺服器控制項的子控制項是否有任何已儲存的檢視狀態設定。 (繼承來源 Control) |
HeaderTemplate | |
ID |
取得或設定指派給伺服器控制項的程式設計識別項。 (繼承來源 Control) |
IdSeparator |
取得用來分隔控制項識別項的字元。 (繼承來源 Control) |
Initialized |
傳回值,指出是否已初始化控制項。 |
IsBoundUsingDataSourceID |
取得值,指出是否已設定 DataSourceID 屬性。 |
IsChildControlStateCleared |
取得值,指出這個控制項中所包含的控制項是否有控制項狀態。 (繼承來源 Control) |
IsDataBindingAutomatic |
取得值,指出資料繫結是否為自動。 |
IsTrackingViewState |
取得值,指出伺服器控制項是否正在儲存檢視狀態的變更。 (繼承來源 Control) |
IsViewStateEnabled |
取得值,指出這個控制項是否已啟用檢視狀態。 (繼承來源 Control) |
Items |
取得 RepeaterItem 控制項中 Repeater 物件的集合。 |
ItemTemplate | |
ItemType |
強型別資料繫結的模型型別的名稱。 |
LoadViewStateByID |
取得值,指出控制項是否依 ID (而不是索引) 參與載入其檢視狀態。 (繼承來源 Control) |
NamingContainer |
取得伺服器控制項命名容器的參考,其建立唯一命名空間,在具有相同 ID 屬性值的伺服器控制項之間作區別。 (繼承來源 Control) |
Page |
取得含有伺服器控制項的 Page 執行個體的參考。 (繼承來源 Control) |
Parent |
在網頁控制階層架構中取得伺服器控制項之父控制項的參考。 (繼承來源 Control) |
RenderingCompatibility |
取得值,這個值會指定將與呈現 HTML 相容的 ASP.NET 版本。 (繼承來源 Control) |
RequiresDataBinding |
取得或設定值,指出 Repeater 控制項是否需要繫結至其指定的資料來源。 |
SelectArguments |
取得 DataSourceSelectArguments 物件,當從資料來源控制項擷取資料時 Repeater 控制項會使用它。 |
SelectMethod |
為了讀取資料要呼叫的方法的名稱。 |
SeparatorTemplate |
取得或設定 ITemplate 介面,其會定義項目間分隔符號的顯示方式。 |
Site |
當呈現在設計介面上時,取得裝載目前控制項之容器的資訊。 (繼承來源 Control) |
SkinID |
取得或設定要套用至控制項的面板。 (繼承來源 Control) |
TemplateControl |
取得或設定包含了此控制項之樣板的參考。 (繼承來源 Control) |
TemplateSourceDirectory |
取得包含目前伺服器控制項的 Page 或 UserControl 的虛擬目錄。 (繼承來源 Control) |
UniqueID |
取得伺服器控制項唯一的、符合階層架構的識別項。 (繼承來源 Control) |
ValidateRequestMode |
取得或設定值,指出控制項是否對來自瀏覽器的用戶端輸入檢查潛在的危險值。 (繼承來源 Control) |
ViewState |
取得狀態資訊的字典,允許您在相同網頁的多個要求之間,儲存和還原伺服器控制項的檢視狀態。 (繼承來源 Control) |
ViewStateIgnoresCase |
取得值,指出 StateBag 物件是否不區分大小寫。 (繼承來源 Control) |
ViewStateMode |
取得或設定這個控制項的檢視狀態模式。 (繼承來源 Control) |
Visible |
取得或設定值,指出伺服器控制項是否會轉譯為頁面上的 UI。 (繼承來源 Control) |
方法
事件
CallingDataMethods |
正在呼叫資料方法時發生。 |
CreatingModelDataSource |
正在建立 ModelDataSource 物件時發生。 |
DataBinding |
發生於伺服器控制項繫結至資料來源時。 (繼承來源 Control) |
Disposed |
發生於伺服器控制項從記憶體釋放時,這是在要求 ASP.NET 網頁時,伺服器控制項生命週期的最後階段。 (繼承來源 Control) |
Init |
發生於初始化伺服器控制項時,是其生命週期中的第一個步驟。 (繼承來源 Control) |
ItemCommand |
按一下 Repeater 控制項中的按鈕時會發生這個事件。 |
ItemCreated |
當在 Repeater 控制項中建立項目時發生。 |
ItemDataBound |
發生於 Repeater 控制項中的項目進行資料繫結之後,但未呈現在頁面上時。 |
Load |
發生於載入伺服器控制項至 Page 物件時。 (繼承來源 Control) |
PreRender |
在 Control 物件載入之後但在呈現之前發生。 (繼承來源 Control) |
Unload |
發生於伺服器控制項從記憶體卸載時。 (繼承來源 Control) |
明確介面實作
IControlBuilderAccessor.ControlBuilder |
如需這個成員的說明,請參閱 ControlBuilder。 (繼承來源 Control) |
IControlDesignerAccessor.GetDesignModeState() |
如需這個成員的說明,請參閱 GetDesignModeState()。 (繼承來源 Control) |
IControlDesignerAccessor.SetDesignModeState(IDictionary) |
如需這個成員的說明,請參閱 SetDesignModeState(IDictionary)。 (繼承來源 Control) |
IControlDesignerAccessor.SetOwnerControl(Control) |
如需這個成員的說明,請參閱 SetOwnerControl(Control)。 (繼承來源 Control) |
IControlDesignerAccessor.UserData |
如需這個成員的說明,請參閱 UserData。 (繼承來源 Control) |
IDataBindingsAccessor.DataBindings |
如需這個成員的說明,請參閱 DataBindings。 (繼承來源 Control) |
IDataBindingsAccessor.HasDataBindings |
如需這個成員的說明,請參閱 HasDataBindings。 (繼承來源 Control) |
IExpressionsAccessor.Expressions |
如需這個成員的說明,請參閱 Expressions。 (繼承來源 Control) |
IExpressionsAccessor.HasExpressions |
如需這個成員的說明,請參閱 HasExpressions。 (繼承來源 Control) |
IParserAccessor.AddParsedSubObject(Object) |
如需這個成員的說明,請參閱 AddParsedSubObject(Object)。 (繼承來源 Control) |
擴充方法
FindDataSourceControl(Control) |
傳回與指定之控制項的資料控制項相關聯的資料來源。 |
FindFieldTemplate(Control, String) |
傳回在指定之控制項的命名容器中所指定資料行的欄位樣板。 |
FindMetaTable(Control) |
傳回包含資料控制項的中繼資料表物件。 |
GetDefaultValues(INamingContainer) |
取得所指定資料控制項的預設值集合。 |
GetMetaTable(INamingContainer) |
取得所指定資料控制項中的資料表中繼資料。 |
SetMetaTable(INamingContainer, MetaTable) |
設定所指定資料控制項中的資料表中繼資料。 |
SetMetaTable(INamingContainer, MetaTable, IDictionary<String,Object>) |
設定所指定資料控制項的資料表中繼資料及預設值對應。 |
SetMetaTable(INamingContainer, MetaTable, Object) |
設定所指定資料控制項的資料表中繼資料及預設值對應。 |
TryGetMetaTable(INamingContainer, MetaTable) |
判斷資料表中繼資料是否可供使用。 |
EnableDynamicData(INamingContainer, Type) |
針對指定的資料控制項啟用動態資料行為。 |
EnableDynamicData(INamingContainer, Type, IDictionary<String,Object>) |
針對指定的資料控制項啟用動態資料行為。 |
EnableDynamicData(INamingContainer, Type, Object) |
針對指定的資料控制項啟用動態資料行為。 |