使用 ASP+ 列表绑定控件(上)
Repeater、DataList和DataGrid控件构成ASP+页面框架中System.Web.
UI.WebControls名称空间内的相关Web控件集。这些控件使HTML显示所绑
定列表或数据源的内容。因此,将它们统称为“列表绑定控件”。
与框架中的其它 Web
控件类似,这些控件提供一致的编程模型并封装一个独立于浏览器的
表示逻辑。这些特性使开发人员能够针对对象模型编程而不用必须掌握与
HTML 相关的那些不一致的和复杂的技术知识。
这三种控件可以按多种布局(包括列表、分栏/报纸栏目和流布局
(HTML流))来表示与其相关的数据源内容。此外,它们还允许您创建完
全不同的或完全定制的布局。除了封装有表示逻辑外,还提供了用来处理
已发送数据、执行状态管理和引发事件的功能。最后,它们还对诸如选择、
编辑、分页和排序之类的标准操作提供不同级别的支持。这些控件可以简
化几种常见的 Web 应用程序方案,包括报表、购物车、产品列表、查询
结果和导航菜单。
下面几节将进一步说明这些控件和如何在您的 Web 应用程序中使用
它们,以及如何选用控件。
列表绑定控件是如何工作的?
本节是本文其余部分的背景材料。概述了这些列表绑定控件的工作方
式、它们的共同特性以及某些相关概念。
DataSource 属性
每个控件都有一个DataSource属性,其类型为System.Collections.
ICollection。用最简单的话来说,数据源是同类对象的一个列表或集合。
此框架中有几个对象提供了 ICollection 的实现。这个集合包括
System.Data.DataView(它通常用来访问关系数据库和 xml(标准化越来越近了) 数据)、一
般ICollection实现(如ArrayList和Hashtable)以及数组。
与传统的数据绑定控件(它们通常需要ADO记录集)不同,除了实现
ICollection接口之外,这些列表绑定控件未对其数据源强加任何其它要
求。根据设计,通过大量增加可作为有效DataSource属性值的类型和数据
结构,它们能够为您的应用程序代码实现最大程度的简单和灵活性。
项目集合
每个列表绑定控件都包含一个项目集合。控件通过列举这些对象当前
的数据源来置入其项目集合。在列举中为每个对象创建单个项目并用于表
示该对象。这些项目同时成为列表绑定控件中包含的控件层次结构的一部
分。
下表列出了与数据源的数据相关联的项目类型。
项目 创建的默认项目类型
AlternatingItem 为项目集合中具有奇数下标的项目创建
SelectedItem 为选定的项目创建(不论该项目是否为备选项目)
EditItem 为处于编辑模式下的项目创建(不管它是否被选中或是否为备选项目)
控件同时创建将在表示中用到的下列项目。但是,它们并不与数据源
的数据相关联。
标头 用来表示标头信息
注脚 用来表示注脚信息
分隔符 用来表示图 1 中所示的每个项目之间的内容,并且仅适用于 Repeater 和 DataList
分页符 用来表示与 DataGrid 控件相关联的分页 UI
项目的数据绑定和创建
列表绑定控件遵循在整个 ASP+ 框架中实现的显式数据绑定模型。这
意味着控件仅当其 DataBind 方法被调用时才需要并列举其数据源。
当调用 DataBind
方法时,列表控件将列举其数据源、创建项目并通过从其数据源中提
取值来对其进行初始化。如果启用了状态管理,则控件还将保存所需的全
部信息,以便在页面的回传处理期间重新创建其项目而无须重新设置数据
源。
显式数据绑定模型使您的应用程序代码可以精确地确定在处理序列中
何时及何处需要数据源。这种功能使对数据库服务器的访问更少且更高效,
而这些访问通常是 Web 应用程序最耗费资源的操作。
一般规则是每当您需要重新创建项目时都必须调用DataBind。在大多
数情况下,您将在您的页面首次被请求创建初始项目集合时调用DataBind。
在该页面的后续执行过程中,您将需要在引起项目集合被更改的各种事件