Repeater控件
5.3 重复控件Repeater和数据列表控件DataList
5.3 重复控件Repeater和数据列表控件DataList
本节介绍ASP.NET中两个数据迭代控件:Repeater和DataList控件。其中,Repeater控件又被称为重复控件;DataList控件又被称为数据列表控件。它们都可以以表格形式显示数据。
5.3.1 Repeater控件概述
Repeater控件是一个数据容器控件,它能够以表格形式显示数据源的数据。若该控件的数据源为空,则什么都不显示。该控件允许用户创建自定义列,并且还能够为这些列提供布局,然而,Repeater控件本身不提供内置呈现功能。若该控件需要呈现数据,则必须为其提供相应的布局。Repeater控件的属性如表5-12所示。
表5-12 Repeater控件的属性
属 性 |
描 述 |
DataSource |
数据源 |
DataSourceID |
数据源控件的ID属性,控件从该数据源控件检索数据 |
DataMember |
DataSource属性中要绑定到控件的数据成员 |
Items |
RepeaterItem对象的集合 |
Controls |
子控件集合 |
EnableTheming |
是否应用主题 |
Repeater控件可以通过DataSourceID、DataSource或DataMember属性来设置其数据源。其中,DataSourceID属性为数据源控件的ID属性值。若Repeater控件使用数据源控件提供数据,它不需要显示绑定控件的数据。DataSource属性可以直接作为Repeater控件的数据源,但是需要显示调用DataBind()方法绑定Repeater控件的数据。另外,若DataSource属性包含多个数据成员,则还可以使用DataMember属性指定DataSource属性中的一个数据成员为Repeater控件的数据源。
Repeater控件还提供了3个事件:ItemCommand、ItemCreated和ItemDataBound,说明如表5-13所示。
表5-13 Repeater控件的事件
事 件 |
描 述 |
ItemCommand |
单击控件中的按钮时发生 |
ItemCreated |
控件中的项创建时发生 |
ItemDataBound |
控件中的项被数据绑定之后发生 |
5.3.2 DataList控件概述
DataList控件也是一种迭代控件。它不但可以以某种格式重复显示数据,而且还能够将样式应用这些数据,另外,DataList控件还可以控制数据显示的方向。和Repeater控件一样,DataList控件也支持模板,并且还为这些模板提供相应的样式。
DataList控件提供了5个静态只读字段,它们分别表示选择、编辑、更新、取消和删除命名的名称,如表5-14所示。
表5-14 DataList控件的字段
字 段 |
描 述 |
SelectCommandName |
【选择】命令名,只读字段 |
EditCommandName |
【编辑】命令名,只读字段 |
UpdateCommandName |
【更新】命令名,只读字段 |
CancelCommandName |
【取消】命令名,只读字段 |
DeleteCommandName |
【删除】命令名,只读字段 |
DataList控件提供了大量的属性,这些属性可以设置控件的行为、样式、外观等,如表5-15所示。
表5-15 DataList控件的属性
属 性 |
描 述 |
EditItemIndex |
编辑项的索引 |
SelectedIndex |
选定项的索引 |
SelectedItem |
选定项 |
SelectedValue |
选定项的键字段的值 |
Items |
控件的项集合,该集合的每一个元素类型为DataListItem |
RepeatLayout |
控件的重复模式,可以是表格形式或流形式 |
GridLines |
网格线样式 |
RepeatColumns |
控件重复显示的列数 |
RepeatDirection |
控件是垂直显示还是水平显示 |
ShowHeader |
控件是否显示页眉部分 |
ShowFooter |
控件是否显示脚注部分 |
下面的实例代码在DatalistCtl.aspx页面上声明了一个DataList控件和一个SqlDataSource数据源控件,它们的ID属性的值分别为dlUser和myDSUser。其中,myDSUser控件为dlUser的数据源控件,并为该控件提供数据。
<!-- Sample_05_03的DatalistCtl.aspx页面 -->
<%@ Page Language="C#" %>
<script runat="server"></script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server"><title>DataList控件的模板列</title></head>
<body><form id="form1" runat="server">
<asp:DataList ID="dlUser" runat="server" BackColor="White"
BorderColor="#336666" BorderStyle="Double" BorderWidth="3px"
CellPadding="4" DataKeyField="ID" DataSourceID="myDSUser"
GridLines="Horizontal" Font-Size="9pt" RepeatColumns="5">