asp.net Repeater控件详解

作者:袖梨 2022-06-25
repeater控件在三个asp教程.net数据web控件中提供了最大的灵活性:它呈现的html标记是可以指定的。datagrid 或 datalist 会在预设的 html 标记中自动包含开发人员指定的内容。与它们不同的是,repeater 在呈现的时候将严格生成指定的 html 标记。 因此,如果不想用 html
< table>
或者一系列
< span>
标记显示数据,而希望以其他方式显示数据,就必须使用 repeater 控件。
就像 datalist 一样,使用repeater控件时要用模板指定标记。 repeater 包含下列五个模板:
alternatingitemtemplate
footertemplate
headertemplate
itemtemplate
separatortemplate
headertemplate 和 footertemplate 指定出现在绑定到 repeater 的数据之前和之后的 html 标记。alternatingitemtemplate 和 itemtemplate 指定用于呈现 repeater 的
datasource
中的每条记录的 html 标记和数据绑定语法。 例如,假设您要把包含雇员信息的数据集绑定到 repeater,该数据集的其中一个字段是
employeename
。 如果要在 web 页上以无序列表的形式显示雇员列表,则可以使用如下 repeater 语法:
  1. < asp:repeater runat="server" id="rptemployees"> 
  2.   < headertemplate>  
  3.     < ul>  
  4.   < /headertemplate> 
  5.   < itemtemplate> 
  6.     < li>< %# databinder.eval(container.dataitem, "employeename") %>< /li> 
  7.   < /itemtemplate> 
  8.   < footertemplate> 
  9.     < /ul> 
  10.   < /footertemplate> 
  11. < /asp:repeater> 
与 datagrid 和 datalist 不同,repeater 类不是从
webcontrol
类派生的。 因此,repeater 缺少 datagrid 和 datalist 二者共有的样式属性。 这一点归结起来无非是说,如果想对 repeater 中所显示数据进行格式设置,则必须在 html 标记中进行这样的操作。 例如,在上面的例子中,如果想用粗体显示雇员的姓名,则必须更改 itemtemplate 以包含 html 粗体标记,就像下面这样:
  1. < itemtemplate> 
  2.   < li>< b>< %# databinder.eval(container.dataitem, "employeename")  
  3.     %>< /b>< /li> 
  4. < /itemtemplate> 
然而对于 datagrid 或 datalist,通过把控件的
itemstyle-font-bold
属性设置为 true,就能用粗体显示文本了。
repeater控件 缺少样式属性会大大增加开发的时间指标。 例如,假设决定使用 repeater 显示数据,这些数据需要以粗体、中间对齐且带有特定背景色的特定字体显示。 所有这些都要用几个 html 标记指定,这些标记很快就会使 repeater 的模板变得凌乱不堪。 这种凌乱会使以后对外观进行更改变得困难得多,尤其是当其他人对该项目进行操作时,则不得不查看大量 html 语法。 将这一点与为 datagrid 或 datalist 指定格式进行比较。 对于这两个控件中的任何一个,都可以通过指定 datagrid 或 datalist 的样式属性来使模板免于凌乱。 此外,可以用一些工具来自动设置 datagrid 和 datalist 的样式属性,例如 microsoft visual studio .net 或 asp.net教程 web matrix。
除了延长开发时间之外,repeater 还缺少有助于支持分页、编辑或数据编辑的内置功能。 由于缺少这些功能支持,repeater 在可用性的评定中得分很低。 当然,如果 所有您感兴趣的只是显示数据,而不用带任何别致的铃声或口哨声,那么 repeater 的功能匮乏就不是主要缺点了。 我之所以强调“如果”一词是因为,通常,web 应用程序一旦进行了部署,用户就会发现他们需要附加的功能,例如排序、分页和编辑。
repeater 有一个弥补性的品质(这并不令人吃惊),那就是性能。 repeater 的性能比 datalist 的性能稍微好一点,比 datagrid 的性能要好很多。图 3 显示了repeater 每秒能处理的请求数,并与 datagrid 和 datalist 进行了对比。
repeater 的每秒请求数 

相关文章

精彩推荐