在ASP.NET 2.0中操作数据之二十九:用DataList和Rep(5)

  既然Repeater 是精确呈现在templates里指定的标记,那么你应该可以想到它不包含任何和风格有关的属性.为了改变Repeater产生的内容的外观,我们需要手动的将HTML或CSS加到它的templates里.

  在这个例子里,我们将做一个类似DataList的alternating rows那样的东西,改变category 的背景色.我们通过ItemTemplate 和AlternatingItemTemplate 来为每个Repeater item 指定RowStyle CSS class ,为每个alternating Repeater item 指定AlternatingRowStyle CSS class ,象下面的代码一样:

<ItemTemplate> <td><%# Eval("CategoryName") %></td> </ItemTemplate> <AlternatingItemTemplate> <td><%# Eval("CategoryName") %></td> </AlternatingItemTemplate>

  我们还要添加一个text为“Product Categories”的header .由于我们不知道 <table>会由多少列组成,最简单的方法保证产生的header 可以跨越所有的列是使用两个<table>.第一个<table>包含两行 — header 和一行包含第二个 <table>的行.第二个 <table>里每个category 为一列.

<table> <tr> <th>Product Categories</th> </tr> <tr> <td> <table> <tr> <td>Category 1</td> <td>Category 2</td> ... <td>Category N</td> </tr> </table> </td> </tr> </table>

下面的 HeaderTemplate 和FooterTemplate 产生需要的标记:

<asp:Repeater runat="server" DataSourceID="ObjectDataSource2" EnableViewState="False"> <HeaderTemplate> <table cellpadding="0" cellspacing="0"> <tr> <th>Product Categories</th> </tr> <tr> <td> <table cellpadding="4" cellspacing="0"> <tr> </HeaderTemplate> <ItemTemplate> <td><%# Eval("CategoryName") %></td> </ItemTemplate> <AlternatingItemTemplate> <td> <%# Eval("CategoryName") %></td> </AlternatingItemTemplate> <FooterTemplate> </tr> </table> </td> </tr> </table> </FooterTemplate> </asp:Repeater>          

图18 里可以看到现在Repeater的样子.

/uploads/allimg/200612/1K3313952_0.png

图 18:  Category 列的背景色交替变换and Includes a Header Row

总结

  虽然使用GridView 来显示,编辑,删除,排序和分页数据都非常容易,但是很臃肿.为了更好的控制外观,我们需要使用DataList 或Repeater .这些控件使用templates 来显示记录,而不是BoundFields.

  DataList 包含一个HTML <table>,默认情况下table的一行显示数据源的一条记录,和GridView一样.我们在以后的教程里会看到,DataList 可以在一个table 行里表示多条记录.而另一方面,Repeater严格的显示在templates指定的标记.它不会添加任何额外的信息,因此通常被用来在除了 <table> 以外的HTML元素里显示数据.

  DataList 和Repeater 在输出上提供了更大的灵活性,而和GridView相比,它们又缺少很多内置的特性.在以后的教程里我们会看到,有一些特性我们可以很简单的加上.但是要记住,使用DataList 和Repeater而不是GridView ,如果想使用这些特性的话,你必须去实现它们.

  祝编程快乐!

作者简介

  Scott Mitchell,著有六本ASP/ASP.NET方面的书,是4GuysFromRolla.com的创始人,自1998年以来一直应用 微软Web技术。Scott是个独立的技术咨询顾问,培训师,作家,最近完成了将由Sams出版社出版的新作,24小时内精通ASP.NET 2.0。他的联系电邮为mitchell@4guysfromrolla.com,也可以通过他的博客与他联系。

您可能感兴趣的文章:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wjwwfz.html