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("CH05MyWeb.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("CH05MyWeb.mdb", "Members") rpA.DataSource=dtDataTable.DefaultView Page.DataBind() Label1.Text=rpA.Items.Count End Sub </SCRIPT> </Html>
|