3.利用Repeater组件显示数据集
相关介绍
ASP.NET中数据的显示多种多样,其中Repeater是另外一个已有的组件。DataGrid总是会以”表格”来展示数据,当我们想用更自由的方式来展示数据着一定会用到Repeater控件,
它以Template(样板)的方式来定义数据输出格式。
STEP 1. 建立页面
我们可以通过更改原有的页面来建立用Repeater组件显示数据。将Location1.htm重命名为Location1.aspx。删除页面中原有的部分,并像上一章一样建立Dataset,其中筛选Region_IDEnterValue=1。下面让我们用Repeater控件来做动态页面。
j为了利用样板定义输出格式,先建立表格。我们可以通过ApplicationàDatabases页面看
数据库的结构。
[图3-1 数据库结构]
根据数据库的结构,设计下列的表格。
[图3-2 模版图]
k下面需要将数据绑定到表格中。将Application面板中Bindings中的数据项拖到其位置中。
[图3-3 Binding对话框]
数据绑定后得到如下页面:
[图3-4数据绑定后的页面]
是否有点似曾相识的感觉,因为Dreamwaver MX继承了UltraDev的传统以高亮显示数据。 ③ 其中Binding对话框中也可以选择数据表示的形式,点选页面的数据项后可在Binding中相应的数据选择数据表示的形式。
[图3-5 数据表示的形式]
若要以此表格为样板显示所有数据项,则需全选此表格。单击Application面板中的Server Behaviors项中的”+”,选择Repeat Region项
[图3-6选择Repeat Region] [图 3-7 选择重复的方式]
在Repeat Region中确定想重复的方式,单击OK。现在就可以按”F12”预览页面了。
STEP 2 分析代码(注意:为了能显示代码,以下所有代码都在“<”之后和“>”之前加了空格,不便之处请多原谅!)
< ASP:Repeater runat="server" DataSource='< %# DataSet1.DefaultView % >' >
< ItemTemplate >
< table width="75%" border="0" >
< tr >
< td width="18%" >Location Name< /td >
< td colspan="3" > < %# DataSet1.FieldValue("LOCATION_NAME", Container) % > < /td >
< /tr >
< tr >
< td >City< /td >
< td width="35%" > < %# DataSet1.FieldValue("CITY", Container) % > < /td >
< td width="19%" >Address< /td >
< td width="28%" > < %# DataSet1.FieldValue("ADDRESS", Container) % > < /td >
< /tr >
< tr >
< td >State< /td >
< td > < %# DataSet1.FieldValue("STATE_COUNTRY", Container) % > < /td >
< td >Code< /td >
< td > < %# DataSet1.FieldValue("CODE", Container) % > < /td >
< /tr >
< tr >
< td >Telephone< /td >
< td > < %# DataSet1.FieldValue("TELEPHONE", Container) % > < /td >
< td >Fax< /td >
< td > < %# DataSet1.FieldValue("FAX", Container) % > < /td >
< /tr >
< /table >
< /ItemTemplate >
< /ASP:Repeater >
ASP.net是通过建立一个ItemTemple的模板来重复显示所有数据的,所以若要设置Repeater的样式,可以通过设置模板来实现。
我们还可以通过添加其他样板来达到我们要的效果。
AlternatingItemTemplate : 实现交叉显示数据。与原ItemTemplate的模板交叉显示数 据
SepartorTemplate: 分隔符样板。可用于分隔数据行。
HeaderTemplate: 标题样板。显示与所有数据的最上方。
FooterTemplate: 结尾样板。显示与所有数据的最下方。
其设计形式同ItemTemplate一样。只需将你想要做模板的部分用标记符包围即可。
通过Dreamwaver MX来插入代码可以有快捷方式。点击Insert面板的ASP.NET标签,然后点击标志,就会弹出标记符添加对话框。选择ASP.NET Tags中的Templates项目。你就可以从中选择你想要添加的代码。Dreamwaver MX会在你原来输入光标在的位置上添加代码。
[图 2-1 添加标记符对话框]
下面是AlternatingItemTemplate,SepartorTemplate,HeaderTemplate,FooterTemplate的代码,可将其插入到< ASP:Repeater >< /ASP:Repeater >中。
< headertemplate >< font color="#666666" size="4" >All
Location< /font >< /headertemplate >
< AlternatingItemTemplate >
< table width="75%" border="0" bgcolor="#CCCCCC" >
< tr >
< td width="17%" >Location Name< /td >
< td colspan="3" bgcolor="#CCCCCC" >
< %# DataSet1.FieldValue("LOCATION_NAME", Container) % >
< /td >
< /tr >
< tr >
< td >City< /td >
< td width="34%" > < %# DataSet1.FieldValue("CITY", Container) % > < /td >
< td width="24%" >Address< /td >
< td width="25%" > < %# DataSet1.FieldValue("ADDRESS", Container) % > < /td >
< /tr >
< tr >
< td >State< /td >
< td > < %# DataSet1.FieldValue("STATE_COUNTRY", Container) % > < /td >
< td >Code< /td >
< td > < %# DataSet1.FieldValue("CODE", Container) % > < /td >
< /tr >
< tr >
< td >Telephone< /td >
< td > < %# DataSet1.FieldValue("TELEPHONE", Container) % > < /td >
< td >Fax< /td >
< td > < %# DataSet1.FieldValue("FAX", Container) % > < /td >
< /tr >
< /table >
< /AlternatingItemTemplate >
< separatortemplate >< hr width="70%" align="left" >
< /separatortemplate >
< footertemplate >< font color="#666666" size="4" >End< /font >< /footertemplate >
当IIS解析代码时就会根据关键字将模板放入相对的位置,取得原来所要求的页面。
以上程序所生成的页面如下:
[图2-1 最终页面]
Repeater组件可以建立更自由的页面,但是其每一行只可以显示一组数据。想不想建立更加自由的页面,那就让我们进入下一节用DataList控件来显示数据吧。