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>