Repeater Web 控件最主要的用途,是可以將數據依照我們所制定的格式逐一顯示出來。只要將想要顯示的格式先定義好,Repeater Web 就會依照我們所定義的格式來顯示;這個預先定義好的格式我們稱為「樣版」(Template)。使用樣版可以讓我們的資料可以更容易、更美觀的呈現給使用者;支持樣版的Web 控件有Repeater、DataList 以及DataGrid。接下來我們先來了解Repeater Web 控件的使用語法:
<ASP:Repeater
Id="被程序代碼所控制的名稱"
Runat="Server"
DataSource='<%# 數據系結敘述%>'
>
<Template Name="樣版名稱">
以HTML 所定義的樣版
</Template >
其它樣版定義...
</ASP:Repeater>
Repeater Web 控件所支持的樣版如下表所示:
其中Item 樣版必須要定義才能順利顯示資料。下列范例利用Repeater Web 控件顯示使用者姓名及電子郵件信箱:
<%@Import Namespace=System.Data.ADO%>
<%@Import Namespace=System.Data%>
<!--#Include File="GetTable.inc"-->
<Html>
<ASP:Repeater Id="rpA" Runat="Server">
<Template Name="ItemTemplate">
<ASP:Image Id="I1" ImageUrl="ico1.gif" Runat="Server"/>
姓名:<%#Container.DataItem("UserName")%><br>
<ASP:Image Id="I2" ImageUrl="ico2.gif" Runat="Server"/>
電郵:<%#Container.DataItem("UserEmail")%><br>
</Template>
</ASP:Repeater>
<Script Language="VB" Runat="Server">
Sub Page_Load(Sender As Object, e As EventArgs)
Dim dtDataTable As DataTable=GetTable("CH05\MyWeb.mdb", "Members")
rpA.DataSource=dtDataTable.DefaultView
Page.DataBind()
End Sub
</SCRIPT>
</Html>
上述范例中定義了一個ItemTemplate 樣版,在這個樣版中的數據系結敘述使用了<%#Container.DataItem("UserName")%> 這個資料系結敘述,其中Container 英文的意思是容器,這里是表示樣版放置在哪個對象中;我們在Repeater Web 控件中使用這個樣版,所以這個樣版的容器就是Repeater Web 控件。當程序在執行時,使用Container 關鍵詞會傳回RepeaterWeb 控件的參考,這時候就可以利用Repeater Web 控件的DataItem 屬性取得目前要顯示的記錄字段。下列范例展現了所有的樣版:
<%@Import Namespace=System.Data.ADO%>
<%@Import Namespace=System.Data%>
<!--#Include File="GetTable.inc"-->
<Html>
<ASP:Repeater Id="rpA" Runat="Server">
<Template Name="HeaderTemplate">
<ASP:Image ImageUrl="ico3.gif" Runat="Server"/> <br>
</Template>
<Template Name="ItemTemplate">
<ASP:Image ImageUrl="ico1.gif" Runat="Server"/>
姓名: <%#Container.DataItem("UserName")%><br>
<ASP:Image ImageUrl="ico2.gif" Runat="Server"/>
電郵: <%#Container.DataItem("UserEmail")%><br>
</Template>
<Template Name="AlternatingItemTemplate">
<ASP:Image ImageUrl="ico1.gif" Runat="Server"/>
姓名: <%#Container.DataItem("UserName")%>
<ASP:Image ImageUrl="ico2.gif" Runat="Server"/>
電郵: <%#Container.DataItem("UserEmail")%><br>
</Template>
<Template Name="SeparatorTemplate">
<ASP:Image ImageUrl="ico5.gif" Runat="Server"/><br>
</Template>
<Template Name="FooterTemplate">
<ASP:Image ImageUrl="ico4.gif" Runat="Server"/><br>
</Template>
</ASP:Repeater>
總共有<ASP:Label Id="Label1" Runat="Server"/> 筆記錄
<Script Language="VB" Runat="Server">
Sub Page_Load(Sender As Object, e As EventArgs)
Dim dtDataTable As DataTable=GetTable("CH05\MyWeb.mdb", "Members")
rpA.DataSource=dtDataTable.DefaultView
Page.DataBind()
Label1.Text=rpA.Items.Count
End Sub
</SCRIPT>
</Html>