9.3 Repeater控件
Repeater控件完全是模板驱动的。对于同样的DataSource,通过应用不同的模板,就可以得到不同的外观表现。Repeater是唯一运行开发人员在模板间拆分HTML标记的控件。利用模板创建表,在HeaderTemplate模板中包含表开始标记<table>,在ItemTemplate模板中包含单个表行标记<tr>,并在FooterTemplate模板中包含结束标记</tabel>。每个Repeater必须至少定义一个ItemTemplate。各种Template模板说明如下。
● ItemTemplate:这是唯一必选的模板,它用来完成对列表内容和布局的定义。
● AlternatingItemTemplate:如果该模板定义的话,则可以用它决定替换项的布局和内容。如果没定义的话,则使用ItemTemplate项的定义。
● SeparatorTemplate:如果对其进行定义的话,则在项(交替项)之间将出现分隔符;如果不定义的话,则不会出现分隔符。
● HeaderTemplate:如果对其进行定义的话,则可以决定列表标头的布局和内容;如果不定义的话,则不出现标头。
● FooterTemplate:如果对其进行定义的话,则可以决定列表注脚的布局和内容;如果不定义的话,则不出现注脚。
【实例9-2】Repeater控件的使用
本实例使用db_news数据库的tb_News数据表,通过Repeater控件的模板设计自定义的表格,以SqlDataSource控件为数据源显示数据表的内容,具体实现步骤如下:
01 启动Visual Studio 2012,创建一个ASP.NET Web空应用程序,命名为“实例9-2”。
02 在“实例9-2”中创建一个名为Default.aspx的窗体。
03 单击网站的目录下的Default.aspx文件,进入“视图编辑”界面,打开“设计视图”,从工具箱中拖动一个Repeater控件和一个SqlDataSource数据源控件。
04 配置SqlDataSource1控件的数据源绑定tb_News数据表。
05 在Repeater控件右上方有一个向右的黑色小三角,单击这个小按钮打开“Repeater任务”列表,展开“选择数据源”下拉列表,从中选择SqlDataSource1。
06 切换到“源视图”,在编辑区中<form></form>标记之间编写如下代码。
上面的代码中第1行添加了一个服务器数据控件Repeater1并设置控件的数据源为SqlDataSource1。第2行~第9行定义了Repeater控件的ItemTemplate模版,其中,第4行~第7行把数据库表tb_News中要显示的字段和Repeater控件中的项绑定在一起,语法中的DataBinder类提供对应用程序快速开发(RAD)设计器的支持,以便生成和分析数据绑定表达式语法。在Web窗体页数据绑定语法中可以使用此类的重载静态Eval方法。与标准数据绑定相比,这提供的语法更容易记忆,但是因为DataBinder.Eval提供自动类型转换,这会导致服务器响应时间变长。
第10行~18行定义了Repeater控件的HeaderTemplate模版。这个模版用来显示Repeater控件头部列标题的信息:新闻编号、新闻标题、新闻类别和发布时间。第19行定义了Repeater控件的FooterTemplate模版,包含了表格的结束标记</Table>。
第21行添加了一个服务器数据源控件SqlDataSource1并设置控件的ConnectionString属性连接字符串对象为db_newsConnectionString,该字符串自动在Web.config文件中的<connectionStrings></connectionStrings>节点中生成,设置控件的SelectCommand属性为查询数据库的sql语句。
07 按快捷键Ctrl+F5运行程序,如图9-11所示。
图9-11 运行结果