ASP.NET数据绑定控件

Download Report

Transcript ASP.NET数据绑定控件

第6章
Web应用程序开发技术
信息科技学院
学习要点:


1.掌握ASP.NET基本控件的使用
2.掌握ASP.NET数据控件的使用
6.2.4.2 数据绑定控件






1. GridView控件
2. DetailsView数据绑定控件
3. FormView数据绑定控件
4. DataList数据绑定控件
5. Repeater数据绑定控件
6.正确使用GridView、Repeater和DataList控件
6.2.4.2 数据绑定控件
从一个Windows窗体的角度来看,“数据绑
定”是把数据绑定到一种用户界面控件的通用机
制。数据绑定控件是将数据作为标记,向发出请
求的客户端设备或浏览器呈现的 UI 控件。
数据绑定控件



ASP.NET 2.0 对改进数据绑定控件的概念作出了几个重要
的创新:
(1)当数据绑定控件绑定到一个数据源控件(通过
DataSourceID 属性)时,能够自动绑定本身。这使页面
开发人员无需了解页面的生存周期,并且不必在此时显式
调用 DataBind()。数据绑定控件能够自动完成这些工作,
甚至能侦听数据源的更改事件。
(2)ASP.NET 2.0 引入了新的数据绑定控件,这些控件
能自动使用数据源的功能,例如排序、分页、更新、插入
和删除。
数据绑定控件

数据绑定控件通过DataSourceID 属性连接到数
据源控件。在 ASP.NET 1.x 版中的一些数据绑
定控件,如 DataGrid、DataList、Repeater 和
DropDownList 这样的列表控件。ASP.NET 2.0
包含了几个新的数据绑定控件
数据绑定控件
Repeater
自由地控制数据的显示。即可以使用非表格的形式来显示数据,从而能够
更灵活地定义其显示的风格。
GridView.NET
中强大功能的数据控件,不需要编写代码就可实现数据的连接、绑定、编
辑、删除、增加等功能。
DataList
数
据 DetailsView
绑
定
FormView
控
件
ReportViewer
通过定义模板或样式来灵活地显示数据。
用于显示表中数据源的单个记录,其中每个数据行表示记录中的一个字段。
该控件通常与 GridView 控件组合使用,构成主-从方案。
用于显示表中数据源的单个记录。使用 FormView 控件时,由您指定模板
以显示和编辑绑定值。模板中包含用于创建窗体的格式、控件和绑定表达
式。FormView 控件通常与 GridView 控件一起用于主控/详细信息方案。
用于显示报表、工具栏和文档结构图的视图区域。工具栏是可配置的,它
提供了运行时功能以支持多页报表中的导航、缩放、搜索、打印和导出功
能。提供编程接口,以便可以自定义控件、配置控件,以及通过代码与控
件进行交互,包括更改在运行时 ReportViewer 使用的数据源。
1 GridView控件

GridView控件提供数据的显示、排序、添
加、修改、删除功能。因为GridView控件
依赖于数据源控件,所以在创建GridView
控件以前必须首先创建一个数据源控件,
如SqlDataSource数据源控件。
GridView控件
序号
属性
1
AllowPaging
说明
获取或设置是否启用分页功能
2
AllowSorting
获取或设置是否启用排序功能
3
Columns
获取表示GridView控件中列字段的DataControlField对象集合
4
DataMember
当数据源包含多个不同的数据项列表时,获取或设置数据绑定控件绑定到的
数据列表名称
5
DataSource
获取或设置数据绑定对象的数据源
6
DataSourceID
获取或设置空间的ID,数据绑定控件从该控件中检索其数据项列表
7
EditIndex
获取或设置要编辑的巷的索引
8
GridLines
获取或设置GridView控件的网格线样式
9
PageIndex
获取或设置当前显示页的索引
10
Rows
获取表示GridView控件中数据行的GridViewRow对象的集合
11
SelectedIndex
获取或设置GridView控件中的选中行的索引
12
SelectedRow
获取对GridViewRow对象的引用
13
SelectedValue
获取GridView控件中选中行的数据键值
2 DetailsView数据绑定控件



DetailsView数据绑定控件的许多功能和
GridView数据绑定控件基本一样,但是它
们也有不同之处。
DetailsView数据绑定控件注重显示记录细
节内容,所以它每次只显示一条;
DetailsView数据绑定控件比GridView数据
绑定控件多一个自动添加数据功能。
(具体方法可参见书上所述)
DetailsView数据绑定控件
序号
事件
说明
1
ItemCommand
2
ItemCreated
该事件发生在创建一个新数据记录时
3
ItemDeleted
该事件发生在单击删除按钮,在删除操作之后执行
4
ItemDeleting
该事件发生在单击删除按钮,在删除操作之前执行
5
ItemInserted
该事件发生在单击添加按钮,在添加操作之后执行
6
ItemInserting
该事件发生在单击添加按钮,在添加操作之前执行
7
ItemUpdated
该事件发生在单击更新按钮,在更新操作之后执行
8
ItemUpdating
该事件发生在单击更新按钮,在更新操作之前执行
9
ModeChanged
该事件发生在修改数据模式,CurrentMode得到更新后执行
10
ModeChanging
该事件发生在修改数据模式,CurrentMode得到更新前执行
11
PageIndexChanged
该事件发生在PageIndex属性的值在分页操作后更改时发生
12
PageIndexchanging
该事件发生在PageIndex属性的值在分页操作前更改时发生
该事件发生在控件中某个按钮被单击时
3 FormView数据绑定控件

FormView数据绑定控件与DetailsView控件在
功能上有很多相似之处,也是用来显示数据源
中的一条记录,分页显示下一条记录,支持数
据的添加、删除、修改、分页等功能。
FormView控件与DetailsView控件之间的不同
之处在DetailsView控件使用表格布局,在此布
局中,记录的每个字段都各自显示一行,而
FormView控件不指定用于显示距离的预定义布
局,用户必须使用模板指定用于显示的布局。
FormView数据绑定控件
模板属性
EditItemTemplate
说明
获取或者设置在编辑模式下自定义项的内容
EmptyDataTemplate
获取或者设置当DetailsView控件绑定空的数据源控件时,由开发人员定义的对于空
数据所呈现模板的内容。默认值为空。可以将自定义模板内容放在
<EmptyDataTemplate>和</EmptyDataTemplate>标签之中。如果DetailsView控件中
同时设置了该属性与EmptyDataText属性,那么EmptyDataTemplate的优先级比
EmptyDataText高。
FooterTemplate
获取或者设置由开发人员自定义的对于表尾行所呈现模板的内容。默认值为空。可以
将自定义模板内容放置在<FooterTemplate>和/FooterTemplate>标签之中。如果同时
设置了FooterText属性,该属性将覆盖FooterText所设置的内容。
HeaderTemplate
获取或者设置由开发人员自定义的对于表头行所呈现模板的内容。默认值为空。可以
将自定义模板内容放置在<HeaderTemplate>和/HeaderTemplate>标签之中。如果同
时设置FooterText属性,该属性将覆盖HeaderText所设置的内容。
InsertItemTemplate
ItemTemplate
PagerTemplate
获取或者设置在插入模式下自定义项的内容
获取或者设置在只读模式下自定义数据行的内容
获取或者设置由开发人员自定义的对于分页行所呈现模板的内容。默认值为空。可以
将自定义模板内容放在<PagerTemplte>和/pagerTemplate>标签之中。
4 DataList数据绑定控件


DataList 可以在设计视图下直接编辑
界面。DataList 除了可以将数据依照
用户制定的样式显示之外,还可对数据
进行修改删除。
每个 DataList 必须最少定义一个
ItemTemplate模板(类似Repeater)。
4 DataList数据绑定控件
序号
事件
说明
1
CancelCommand 对DataList控件中的某个项单击Cancel按钮时发
生
2
DeleteCommand 对DataList控件中的某个项单击Delete按钮时发
生
3
EditCommand
对DataList控件中的某个项单击Edit按钮时发生
4
ItemCommand
当单击DataList控件中的任一按钮时发生
5
ItemDataBound
当某个记录的数据被绑定到DataList控件时发生
6
ItemCreated
当在DataList控件中创建记录时在服务器上发生
7
SelectedIndexCh 在两次服务器发送之间,当DataList控件中选择
anged
了不同的项时发生
8
UpdateCommand 对DataList控件中的某个项单击Update按钮时发
生
DataList数据绑定控件




每个模板都有自己的样式属性。例如,ItemTemplate 的样式
通过 ItemStyle 属性设置。
属性中布局和外观两个选项影响 DataList 的整体呈现。
在 DataList 中选择项目中,通过 SelectedItemTemplate 属性
可以自定义选定项目的内容和外观。SelectedItemTemplate
由 SelectedIndex 属性进行控制。SelectedIndex 的默认值为
-1,这意味着列表中没有任何项目被选中。当 SelectedIndex
设置到某个特定项目时,则使用 SelectedItemTemplate 显示
该项目。
编辑 DataList 项目 DataList 控件通过其 EditItemTemplate
属性支持对项目数据进行就地编辑。在编辑项目时,
EditItemTemplate 定义该项目的内容和外观。
DataList数据绑定控件


DataList 还提供了三个可用于支持编辑操作的事件。当在列表的
ItemTemplate 上单击“编辑”命令按钮控件时,将引发
EditCommand。用户可用自己的代码处理此事件。通常是把
EditItemIndex 设置到选定的项目,然后将数据重新绑定到
DataList。
EditItemTemplate 通常包含“更新”和“取消”命令按钮。这些按
钮分别导致引发 UpdateCommand 和 CancelCommand 事件。用
户可用自己的代码来处理这些事件。“取消”的通常逻辑是把
EditItemIndex 设置成 -1,然后将数据重新绑定到 DataList。“更
新”的通常逻辑是更新数据源,将 EditItemIndex 设置成 -1,然后
将数据重新绑定到 DataList。
DataList数据绑定控件

DataList 事件可以让用户自定义项的创建过程,自定义控件支持多种
事件。常用的事件为了响应列表项中的按钮单击而引发如下四个事件:
EditCommand 、DeleteCommand、UpdateCommand 、
CancelCommand。若要引发这些事件,可将 Button 、LinkButton
或 ImageButton 控件添加到 DataList 控件中的模板中,并将这些按
钮的 CommandName 属性设置为某个关键字,如 edit、delete、
update 或 cancel。当用户单击项中的某个按钮时,就会向该按钮的
容器(DataList 控件)发送事件。按钮具体引发哪个事件将取决于所
单击按钮的 CommandName 属性的值。例如,如果某个按钮的
CommandName 属性设置为 edit,则单击该按钮时将引发
EditCommand 事件。
DataList数据绑定控件



如果 CommandName 属性设置为 delete,则单击该按钮将
引发 DeleteCommand 事件,依此类推。
DataList 控件还支持 ItemCommand 事件,当用户单击某个
没有预定义命令(如 edit 或 delete)的按钮时将引发该事件,
用户可以按照如下方法将此事件用于自定义功能:将某个按钮
的 CommandName 属性设置为一个自己所需的值,然后在
ItemCommand 事件处理程序中测试这个值。
(具体方法可参见书上实例)
5 Repeater数据绑定控件


Repeater控件是Web 服务器控件中的一个容器控件,它可以从页
的任何可用数据中创建出自定义列表。Repeater 控件不具备内置
的呈现功能,这就要求用户必须通过创建模板为 Repeater 控件
提供布局。当该页运行时,Repeater 控件依次通过数据源中的记
录为每个记录呈现一个项。
Repeater控件不够强大,如果显示较复杂的数据,可以用
gridview,一般复杂的用DataList,简单的数据呈现就可以使用
Repeater,因为它简单,小巧,灵活。
因为Reapter不具备内置呈现功能,所以需要一些模板来实现它
的数据呈现,无法添加静态项。如果Repeater控件没有指定数据
源,它将不显示,如果指定的数据源中没有数据,那么头,脚模
板将继续显示。
5 Repeater数据绑定控件
ItemTemplate 模板说明
模板名称
描述
ItemTemplate
定义列表中项目的内容和布局。
包含要为数据源中每个数据项都
要呈现一次的 HTML 元素和控件。
AlternatingItemTemplate
如果定义该模板,则确定替换项的内容和布局。如果未定义,则
使用 ItemTemplate。
SeparatorTemplate
如果定义该模板,则在各个项目(以及替换项)之间呈现分隔符。
如果未定义,则不呈现分隔符,包含在每项之间呈现的元素。典
型的示例可能是一条直线(使用 hr 元素)。
EditItemTemplate
如果定义该模板,则确定正在编辑项目的内容和布局。如果未定
义 , 则 使 用
ItemTemplate (AlternatingItemTemplate,
SelectedItemTemplate)
HeaderTemplate
如果定义该模板,则确定列表标题的内容和布局。如果未定义,
则不呈现标题。
FooterTemplate
如果定义该模板,则确定列表脚注的内容和布局。如果未定义,
则不呈现脚注。
6 正确使用GridView、Repeater和DataList控件
数据绑定控件GridView、Repeater和DataList是显示数据的有力控件。其
中GridView是迄今为止功能最为丰富的数据显示控件,大部分功能可通
过属性设置来完成,甚至不需要编写一行代码就能实现强大的数据处理
功能。许多初学者在进行Web开发时,只要遇到数据处理或显示就习惯
性地使用GridView控件。虽然使用GridView大大减少了开发者的编程工
作量,但最大的问题就是该控件在处理数据时需要占用很多Web服务器
资源,生成在客户端呈现的HTML文件也非常大,而且只能以表格形式输
出数据,最终导致系统响应性能降低。我们建议在用户数据量不大且不
需要出色的界面效果、特别是当需要编辑、分页、排序功能的时候,快
的处理性能,具有更好的显示效果的时候推荐使用Reapter控件,
Reapter控件允许对用户通过模板自定义数据项的输出,处理速度非常快。
但Reapter控件的缺点是,必须在各个模板中进行手工编写代码,对于分
页、排序、编辑等都必须编写代码。DataList控件的使用性能介于
GridView和Repeater之间。可在DataList中通过属性设置定义各个模板,
然后部分地通过编程实现分页、排序、数据编辑。
思考练习题:

1.GridView、DetailsView、FormView、
DataList与Repeater控件应用中有何异同之处?