1、第6章 数据绑定技术,教学提示:数据访问是Web开发中非常重要部分,数据数据库文件保存在网站的服务器中,称为Web数据库,一般常用的数据库系统都可以作为Web数据库,利用ADO.NET可以连接数据库,执行SQL语句或调用存储过程对数据库的数据进行查询、统计、插入、修改、删除等操作。,本章的主要内容 :,1、ASP.NET 2.0的数据源控件介绍 2、ASP.NET 2.0的数据绑定技术 3、各种数据库的连接方法 4、使用ASP.NET提供的对象,对数据库完成查询显示、添加、删除、修改等操作,ASP.NET 2.0引入了比ASP.NET 1.0、ASP.NET1.1更简洁快速的开发思想,主要体现
2、在以下两个方面: 1.通过数据绑定技术实现尽量不写或者少些代码的目的 2.集成WEB应用中常见功能模块通过拖放控件和设置参数完成 3.与多层构建兼容的数据绑定技术,6.1 ASP.NET 2.0值得注意的新功能,6.2 数据源控件,SqlDataSource数据源控件重要属性的描述,6.2.1SqlDataSource数据源控件,6.2.1SqlDataSource数据源控件,SqlDataSource控件可以访问任何OLEDB或符合ODBC的数据源,也可以访问Oracle等数据库,而AccessDataSource控件只能访问Access数据库。 对AccessDataSource控件来说,
3、必须首先配置DataFile属性,才能对Command属性进行很好的配置该属性用于指定需要访问的Access数据库文件(.mdb)的路径。但需要注意,必须首先将数据库文件添加到当前项目中(一般存放在App_Data文件夹中)才能顺利的完成配置。,6.2.2 AccessDataSource数据源控件,AccessDataSource数据源控件的配置方法和SqlDataSource控件中的做法相同,但数据源我们只能选择Access,在此不再详细说明配置过程。,6.2.2 AccessDataSource数据源控件,XmlDataSource控件是针对层次化数据源中的xml而设计的。层次化数据源还
4、包扩文件夹列表、网站地图等。XmlDataSource数据源为数据绑定控件提供XML类型的数据源。数据绑定控件可以使用XmlDataSource数据源控件显示分层数据和表格数据 创建XmlDataSource数据源的方法 (见书),6.2.3 XmlDataSource数据源控件,SiteMapDataSource数据源控件是提供分层的数据源,Asp.Net 2.0中,SiteMapDataSource是专门用于连接和访问站点地图文件(*.sitmap)的数据源控件,并且可以将访问到的数据直接应用到网站导航控件中。,6.2.4 SiteMapDataSource数据源控件,SiteMapDat
5、aSource数据源控件常用属性,6.2.4 SiteMapDataSource数据源控件,注:SiteMapDataSource控件不具有多数数据源控件所支持的数据缓存、排序、过滤、分页、添加、删除和修改等能力。在使用数据源控件之前,首先要制作站点地图文件(web.sitmap),然后拖拽SiteMapDataSource控件和显示结构的控件(如TreeView 或Menu控件),将TreeView 或Menu控件的“选择数据源”设置成先前定义的SiteMapDataSource控件名称即可。,6.2.4 SiteMapDataSource数据源控件,“三层构架”是目前比较常用的架构,就是将
6、程序细分为数据访问层、业务逻辑层和表示层。三层构架的好处很多,ObjectDataSource控件与其它数据源控件不同的是,该控件能够帮助开发人员在表示层与数据访问层、表示层与业务逻辑层之间架起一座桥梁,从而将来自数据访问层或者业务逻辑层的数据对象,与表示层中的数据绑定控件绑定,实现数据的显示和编辑等。,6.2.5 ObjectDataSource数据源控件,ObjectDataSource数据源控件能将自定义业务对象绑定到数据控件上,也可以实现数据层到表现层的分离,适合应用在多层开发的框架转换中。(实例见书),ObjectDataSource,6.2.5 ObjectDataSource数据
7、源控件,ObjectDataSource控件不存在ConnectionString、ProviderName、SelectCommand等属性,替而代之,出现了TypeName、SelectMethod等属性。这些新的属性将用来指示ObjectDataSource控件实例使用哪个业务类以及哪种方法来检索或编辑数据。而这些业务类和方法来自于数据访问层或业务逻辑层。先看ObjectDataSource控件的声明代码:,6.2.5 ObjectDataSource数据源控件, 代码中,TypeName属性用于设置相关业务类的名称;SelectMethod属性用于设置该业务类中实现检索数据源数据的方法
8、名称。该业务类的方法必须返回一个可枚举的列表对象,如:集合、数组、DataSet、DataReader等,或者返回包含数据的业务实体对象。,6.2.5 ObjectDataSource数据源控件,从一个Windows窗体的角度来看,“数据绑定”是把数据绑定到一种用户界面控件的通用机制。数据绑定控件是将数据作为标记,向发出请求的客户端设备或浏览器呈现的 UI 控件。,6.3 数据绑定控件,6.3 数据绑定控件,ASP.NET 2.0 对改进数据绑定控件的概念作出了几个重要的创新: (1)当数据绑定控件绑定到一个数据源控件(通过 DataSourceID 属性)时,能够自动绑定本身。这使页面开发人
9、员无需了解页面的生存周期,并且不必在此时显式调用 DataBind()。数据绑定控件能够自动完成这些工作,甚至能侦听数据源的更改事件。 (2)ASP.NET 2.0 引入了新的数据绑定控件,这些控件能自动使用数据源的功能,例如排序、分页、更新、插入和删除。,数据绑定控件通过DataSourceID 属性连接到数据源控件。在 ASP.NET 1.x 版中的一些数据绑定控件,如 DataGrid、DataList、Repeater 和DropDownList 这样的列表控件。ASP.NET 2.0包含了几个新的数据绑定控件,6.3 数据绑定控件,6.3 数据绑定控件,6.3.1 GridView控
10、件,GridView控件提供数据的显示、排序、添加、修改、删除功能。因为GridView控件依赖于数据源控件,所以在创建GridView控件以前必须首先创建一个数据源控件,如SqlDataSource数据源控件。,6.3.2 DetailsView数据绑定控件,DetailsView数据绑定控件的许多功能和GridView数据绑定控件基本一样,但是它们也有不同之处。 DetailsView数据绑定控件注重显示记录细节内容,所以它每次只显示一条;DetailsView数据绑定控件比GridView数据绑定控件多一个自动添加数据功能。 (具体方法可参见书上所述),6.3.3 FormView数据绑
11、定控件,FormView数据绑定控件与DetailsView控件在功能上有很多相似之处,也是用来显示数据源中的一条记录,分页显示下一条记录,支持数据的添加、删除、修改、分页等功能。FormView控件与DetailsView控件之间的不同之处在DetailsView控件使用表格布局,在此布局中,记录的每个字段都各自显示一行,而FormView控件不指定用于显示距离的预定义布局,用户必须使用模板指定用于显示的布局。,6.3.4 DataList数据绑定控件,DataList 可以在设计视图下直接编辑界面。DataList 除了可以将数据依照用户制定的样式显示之外,还可对数据进行修改删除。 每个
12、DataList 必须最少定义一个 ItemTemplate模板(类似Repeater)。,6.3.4 DataList数据绑定控件,6.3.4 DataList数据绑定控件,每个模板都有自己的样式属性。例如,ItemTemplate 的样式通过 ItemStyle 属性设置。 属性中布局和外观两个选项影响 DataList 的整体呈现。 在 DataList 中选择项目中,通过 SelectedItemTemplate 属性可以自定义选定项目的内容和外观。SelectedItemTemplate 由 SelectedIndex 属性进行控制。SelectedIndex 的默认值为 -1,这意
13、味着列表中没有任何项目被选中。当 SelectedIndex 设置到某个特定项目时,则使用 SelectedItemTemplate 显示该项目。 编辑 DataList 项目 DataList 控件通过其 EditItemTemplate 属性支持对项目数据进行就地编辑。在编辑项目时,EditItemTemplate 定义该项目的内容和外观。,6.3.4 DataList数据绑定控件,DataList 还提供了三个可用于支持编辑操作的事件。当在列表的 ItemTemplate 上单击“编辑”命令按钮控件时,将引发 EditCommand。用户可用自己的代码处理此事件。通常是把 EditIte
14、mIndex 设置到选定的项目,然后将数据重新绑定到 DataList。 EditItemTemplate 通常包含“更新”和“取消”命令按钮。这些按钮分别导致引发 UpdateCommand 和 CancelCommand 事件。用户可用自己的代码来处理这些事件。“取消”的通常逻辑是把 EditItemIndex 设置成 -1,然后将数据重新绑定到 DataList。“更新”的通常逻辑是更新数据源,将 EditItemIndex 设置成 -1,然后将数据重新绑定到 DataList。,6.3.4 DataList数据绑定控件,DataList 事件可以让用户自定义项的创建过程,自定义控件支持
15、多种事件。常用的事件为了响应列表项中的按钮单击而引发如下四个事件:EditCommand 、DeleteCommand、UpdateCommand 、CancelCommand。若要引发这些事件,可将 Button 、LinkButton或 ImageButton 控件添加到 DataList 控件中的模板中,并将这些按钮的 CommandName 属性设置为某个关键字,如 edit、delete、update 或 cancel。当用户单击项中的某个按钮时,就会向该按钮的容器(DataList 控件)发送事件。按钮具体引发哪个事件将取决于所单击按钮的 CommandName 属性的值。例如,如
16、果某个按钮的 CommandName 属性设置为 edit,则单击该按钮时将引发 EditCommand 事件。,6.3.4 DataList数据绑定控件,如果 CommandName 属性设置为 delete,则单击该按钮将引发 DeleteCommand 事件,依此类推。 DataList 控件还支持 ItemCommand 事件,当用户单击某个没有预定义命令(如 edit 或 delete)的按钮时将引发该事件,用户可以按照如下方法将此事件用于自定义功能:将某个按钮的 CommandName 属性设置为一个自己所需的值,然后在 ItemCommand 事件处理程序中测试这个值。 (具体方
17、法可参见书上实例),6.3.5 Repeater数据绑定控件,Repeater控件是Web 服务器控件中的一个容器控件,它可以从页的任何可用数据中创建出自定义列表。Repeater 控件不具备内置的呈现功能,这就要求用户必须通过创建模板为 Repeater 控件提供布局。当该页运行时,Repeater 控件依次通过数据源中的记录为每个记录呈现一个项。Repeater控件不够强大,如果显示较复杂的数据,可以用gridview,一般复杂的用DataList,简单的数据呈现就可以使用Repeater,因为它简单,小巧,灵活。 因为Reapter不具备内置呈现功能,所以需要一些模板来实现它的数据呈现,
18、无法添加静态项。如果Repeater控件没有指定数据源,它将不显示,如果指定的数据源中没有数据,那么头,脚模板将继续显示。,6.3.5 Repeater数据绑定控件,6.4 数据库的基本操作,数据源绑定控件的功能虽然很强大,可以简化许多程序代码,但仍然需要ADO.NET的一些对象模型来完成对数据库的操作,如Connection对象、Command对象、DataSet对象、DataAdapter对象、DataReader对象等。下面结合这些对象,介绍一下对数据库的基本操作。,6.4.1 建立数据库连接,ADO.NET提供了4种.NET Framework数据提供程序用于访问数据库,可以连接Acc
19、ess数据库、SQL server数据库、Oracle数据库及与与ODBC数据源的连接等。具体如书上第157页所述,对数据库的访问操作,6.4.2 数据查询显示 6.4.3 数据添加 6.4.2 数据修改 6.4.2 数据删除 具体按书上第157至159所述,建立连接后运行SQL语句对数据库进行操作,本章小结,ASP.NET如何访问数据库的基本方法。ASP.NET2.0有多种方式可以访问Web数据库,本章以实例阐述了对数据库中的数据如何进行显示、插入、修改、删除等基本操作;通过ASP.NET所提供的多种数据库访问控件可以方便快速地对数据库进行各种操作,通过本章的学习,读者应能掌握对Web数据库的各种访问以便在建立站点时实现Web数据库各种应用。,