原来是美男之谢谢你:DataList与Repeater

来源:百度文库 编辑:偶看新闻 时间:2024/04/29 20:58:16
DataList与Repeater是另外两组数据类控件,这两组控件在ASP.NET 1.X的版本中已经提供,在ASP.NET 2.0中被保留下来。这两组控件的功能与上述XXXView之类的控件有些重叠,因此开发人员很容易发生混淆,试着了解它们之间本质上的差异,是在适当的时机妥善运用这些控件的关键。这一节,我们将针对这两个控件进行相关的说明,同时针对它们与XXXView类控件的差别进行说明。
虽然XXXView这一类的控件为单笔数据与多笔数据的视图编辑提供了方便的内置功能,但是DataList与Repeater可让我们以更弹性的方式来呈现数据内容,同样,我们假设读者已经有了相关的使用经验,因此直接来看看DataList在网页上呈现的效果。在设置的过程中,你会看到此控件与前面讨论的XXXView这一类的控件的差异。
示例BooksTypedDataSetR/UDataList.aspx
在上述项目中,新建一个网页文件,将其命名为UDataList.aspx,在网页上配置一个ObjectDataSource,指定其数据源为前面建立的BooksAuthorTableAdapters.BooksTableAdapter数据集。紧接着将一个DataList控件插入网页,并且指定其数据源为ObjectDataSource,完成之后的网页接口如下:
 
DataList是一个与GridView功能类似的控件,但是它以样板呈现每一笔数据的内容,就如同把FormView嵌入GridView中取代以表格呈现的数据行,如此一来,开发人员可以更弹性地调整其中的每一笔数据,这些内容同样由不同的面板所提供。打开DataList控件的智能型标签,如下图所示,单击功能面板最下方的"编辑样板"链接,切换到样板编辑功能。 
在默认的情形下,DataList控件会显示ItemTemplate样板。当你切换到这个样板的时候,会发现其设计模式与FormView非常类似,只是它最后会将所有的数据内容显示出来。除此之外,它同时提供了EditItemTemplate等编辑样板,分隔符号样板甚至还提供开发人员自行设计用来分隔数据的区隔符号,如下图所示。 
如果没有进行任何的设置,在浏览器中将会呈现以下的结果,它显示了所有的数据内容。 
读者可以从这个示例中发现,与GridView比较,DataList以样板呈现每一列的内容,因此当你需要同时呈现一笔以上的数据,又要兼顾单笔编辑的弹性时,使用DataList会是比较合适的选择。它可以让我们处理GridView难以达到的数据外观,但是相对地,它会缺失GridView的一些功能,例如分页或数据排序等。无论如何,DataList适合我们自定义数据的版面内容,后续会有更多的讨论。
DataList提供了两个非常重要的属性让我们能够轻易地改变其外观:RepeatColumns与RepeatDirection。前者指定单一列所要呈现的数据笔数,后者则是数据所要呈现的方向。在默认的情形下,RepeatColumns被设置为0,而RepeatDirection为Vertical,因此在这个示例中数据是由上而下、一次呈现一笔,读者可以自行调整这两个属性值,看看效果的差异。以下的页面是将RepeatColumns设置为3、而RepeatDirection为Horizontal,表示每一列会呈现3笔数据,以水平方向从左至右显示,如下图所示。
 
谈完DataList,现在来看看DataRepeater控件。如同其名称所表示的,适合用来呈现一些需要以重复格式表示的数据内容,例如列表数据等。使用这个控件的时候应该了解的是,它不同于我们所讨论的任何一种数据接口,当你完成数据绑定设置的时候,并不会产生任何绑定的数据内容,开发人员必须手动切换到网页标签的程序代码中进行设置,才能将绑定的数据呈现出来,它甚至没有提供可视化的功能。现在我们来看它在网页上的运用。
示例BooksTypedDataSetR/URepeater.aspx
这个示例配置了一个ObjectDataSource控件及示范用的Repeater控件,建立其数据源为BooksAuthorTableAdapters.AuthorsTableAdapter,同时将Repeater控件绑定至ObjectDataSource控件,此时所呈现的界面如下:
 
数据源设置完成之后,Repeater控件并没有因此自动建立数据绑定,开发人员必须自已手动完成相关的配置。现在切换到原始文件编辑页,在其中的标签中输入以下的内容: DataSourceID="ObjectDataSource1">


图书作者列表数据



<%# Eval("authorName") %>




<%# Eval("authorName") %>



结束



这段嵌入标签区块的程序代码,建立了4个样板,分别定义标头(HeaderTemplate)、数据内容(ItemTemplate)、换行替代内容(AlternatingItemTemplate)及页尾(FooterTemplate)。其中分别以
标签定义每个样板所要呈现的内容,阴影部分的代码通过Eval绑定数据源内容。
下面为此定义在网页上所呈现的内容:
 
Repeater控件是一种内容完全开放的自定义的数据接口,因此在设计的过程中,可以有最大的弹性,但是同时,你必须耗费更大的精力才能完成所需的功能。与DataList控件相同,这两组控件适合制作某些需要个性化的特殊版面,因为它们允许开发人员弹性地自定义所要呈现的数据内容,相反,如果XXXView控件能够轻易达到的功能,就不建议选择此种控件来实现。
完成了数据接口的介绍,本章的内容即将告一段落。我们从主版页面的网站共享区域开始,讨论了如何创建网站系统的表示层接口,同时针对导航控件的运用,进行了相关的说明。读者完成本章的课程后,应该已经具备了足够的知识建立整体网站的可视化接口。
从下一章开始,我们要继续介绍另外一个重要的主题:会员管理与网站的授权验证机制,完成网页的主体构造。接下来开发人员必须进一步为网站系统导入会员管理机制,提供进一步的授权验证的相关功能。