《ADO.NET数据库访问技术案例教程 第10章 数据绑定与导.ppt》由会员分享,可在线阅读,更多相关《ADO.NET数据库访问技术案例教程 第10章 数据绑定与导.ppt(60页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 第第 10 10 章章数据绑定与记录导航数据绑定与记录导航 数据绑定概述数据绑定概述10.1数据绑定的实现方法数据绑定的实现方法10.2记记 录录 导导 航航10.3 对于各种类型的数据库应用系统,通对于各种类型的数据库应用系统,通过过Windows界面或界面或Web网页浏览数据源中网页浏览数据源中的数据时,一般先将后台数据表中的数据的数据时,一般先将后台数据表中的数据填充到内存的数据集中,然后展现在填充到内存的数据集中,然后展现在Windows界面或者界面或者Web网页中。网页中。本章主要学习本章主要学习ADO.NET的数据绑定技的数据绑定技术和记录导航。术和记录导航。【知知识识技技能能目
2、目标标】(1)掌握数据绑定的方式、对象与清除)掌握数据绑定的方式、对象与清除方法。方法。(2)掌握使用属性窗口实现数据绑定的)掌握使用属性窗口实现数据绑定的方法。方法。(3)掌握编写程序代码实现数据绑定的)掌握编写程序代码实现数据绑定的方法。方法。(4)掌握)掌握ADO.NET中记录导航的方法。中记录导航的方法。(5)了解数据绑定与记录导航涉及的类。)了解数据绑定与记录导航涉及的类。【本本章章学学习习导导航航】本章主要探讨数据绑定和记录导航两本章主要探讨数据绑定和记录导航两个问题,这两个问题都会涉及到几个相同个问题,这两个问题都会涉及到几个相同的类,的类,ADO.NET访问数据库时记录位置的访
3、问数据库时记录位置的移动机制与移动机制与ADO不同,主要通过几个对象不同,主要通过几个对象进行控制。进行控制。10.110.1数据绑定概述数据绑定概述10.1.1数据绑定的方式数据绑定的方式窗体控件的数据绑定一般可以分为两窗体控件的数据绑定一般可以分为两种方式:单一绑定和复合绑定。种方式:单一绑定和复合绑定。1单一绑定单一绑定所谓所谓“单一绑定单一绑定”是指将单一的数据是指将单一的数据元素绑定到控件的某个属性。例如,将元素绑定到控件的某个属性。例如,将TextBox控件的控件的Text属性与属性与“学生信息学生信息”数数据表中的据表中的“姓名姓名”字段进行绑定。字段进行绑定。单一绑定是利用控件
4、的单一绑定是利用控件的DataBindings集合属性实现的,其一般形式如下。集合属性实现的,其一般形式如下。控件名称控件名称.DataBindings.Add(控件控件的属性名称的属性名称,数据源数据源,数据成员数据成员)括号中的三个参数说明如下。括号中的三个参数说明如下。(1)控件的属性名称)控件的属性名称该参数为字符串形式,指定绑定到控该参数为字符串形式,指定绑定到控件的哪一个属性。件的哪一个属性。DataBindings的集合属的集合属性允许让控件的多个属性与数据源进行绑性允许让控件的多个属性与数据源进行绑定,经常使用的绑定属性如表定,经常使用的绑定属性如表10-1所示。所示。图图10
5、-110-1单一绑定的错误提示信息单一绑定的错误提示信息 (2)数据源)数据源该参数为变量形式,可以是该参数为变量形式,可以是DataSet、DataTable、DataView或者数组等多种形式。或者数组等多种形式。(3)数据成员)数据成员该参数为字符串形式,是数据源的子该参数为字符串形式,是数据源的子集合。如果数据源是集合。如果数据源是DataSet,那么数据成,那么数据成员就是员就是“DataTable.字段名称字段名称”;如果数;如果数据源是据源是DataTable,那么数据成员就是,那么数据成员就是“字字段名称段名称”。2复合绑定复合绑定所谓所谓“复合绑定复合绑定”是指控件和一个以是
6、指控件和一个以上的数据元素进行绑定,通常是指把控件上的数据元素进行绑定,通常是指把控件和数据集中的多条数据记录或者多个字段和数据集中的多条数据记录或者多个字段值、数组中的多个数组元素进行绑定。值、数组中的多个数组元素进行绑定。DataGrid、ComboBox、ListBox和和CheckedListBox等控件都支持复合数据绑等控件都支持复合数据绑定,例如,将定,例如,将DataGrid控件与数据集控件与数据集DataSet绑定,以便同时显示数据表中的所绑定,以便同时显示数据表中的所有数据记录。有数据记录。10.1.2数据绑定的对象数据绑定的对象ADO.NET提供了许多能够被绑定的数提供了许
7、多能够被绑定的数据对象,既包括一般的数据集及其成员对据对象,既包括一般的数据集及其成员对象,也包括数组或集合,以及窗体或其他象,也包括数组或集合,以及窗体或其他控件的属性。控件的属性。(1)DataSet可以使用单一绑定或者复合绑定来绑可以使用单一绑定或者复合绑定来绑定定DataSet内的数据。内的数据。(2)DataTable可以使用单一绑定或复合绑定来绑定可以使用单一绑定或复合绑定来绑定DataTable内的数据。内的数据。(3)DataView可以使用单一绑定或复合绑定来绑定可以使用单一绑定或复合绑定来绑定DataView内的数据。内的数据。(4)DataColumnDataColumn
8、对象是对象是DataTable对象的对象的基本组成元素,可以使用单一绑定或复合基本组成元素,可以使用单一绑定或复合绑定来绑定数据表中的某个字段的数据。绑定来绑定数据表中的某个字段的数据。(5)数组或集合)数组或集合数组或集合也可以作为数据绑定的对数组或集合也可以作为数据绑定的对象。象。(6)窗体或控件属性)窗体或控件属性Windows窗体中控件的绑定对象也可窗体中控件的绑定对象也可以是窗体或控件的属性。以是窗体或控件的属性。10.1.3数据绑定的清除数据绑定的清除程序运行时,对于单一绑定,同一个程序运行时,对于单一绑定,同一个控件属性不能重复进行绑定,否则会出现控件属性不能重复进行绑定,否则会
9、出现如图如图10-1所示的绑定错误。所示的绑定错误。正确的方法是:先清除现有的绑定,正确的方法是:先清除现有的绑定,然后再重新与数据源进行绑定。然后再重新与数据源进行绑定。清除数据绑定的实例代码如下所示。清除数据绑定的实例代码如下所示。清除窗体中所有控件的绑定的实例代清除窗体中所有控件的绑定的实例代码如下所示。码如下所示。10.210.2数据绑定的实现方法数据绑定的实现方法ADO.NET的数据绑定的实现方法主要的数据绑定的实现方法主要有两种:第一种方法是在设计阶段使用属有两种:第一种方法是在设计阶段使用属性窗口设置属性值实现数据绑定;第二种性窗口设置属性值实现数据绑定;第二种方法是在设计阶段编
10、写程序代码实现数据方法是在设计阶段编写程序代码实现数据绑定。绑定。10.2.1使用属性窗口实现数使用属性窗口实现数据绑定据绑定在设计阶段事先建立数据集的实例对在设计阶段事先建立数据集的实例对象,并把数据填入该数据集中,然后利用象,并把数据填入该数据集中,然后利用VisualStudio.NET集成开发环境的属性窗集成开发环境的属性窗口进行数据绑定。口进行数据绑定。【实例实例10-1】1设计任务设计任务设计一个窗体,该窗体利用属性窗口设计一个窗体,该窗体利用属性窗口实现数据绑定。其运行效果如图实现数据绑定。其运行效果如图10-2所示。所示。图图10-210-2使用属性窗口绑定数据的运行效果使用属
11、性窗口绑定数据的运行效果 2设计过程设计过程(1)新建一个项目)新建一个项目Chapter10_1。(2)在窗体中添加)在窗体中添加4个个Button控件、控件、4个个Label控件、控件、1个个TextBox控件、控件、3个个ComboBox控件和控件和1个个DataGrid控控件,窗体及控件的设计外观如图件,窗体及控件的设计外观如图10-3所示。所示。图图10-310-3数据绑定窗体的设计状态数据绑定窗体的设计状态 利用利用“工具箱工具箱”中的中的“数据数据”控件创控件创建建SqlConnection对象和对象和SqlDataAdapter对对象,分别更改名称为象,分别更改名称为“conn
12、”和和“SqlDa”。生成数据集,且将数据集名称更改为生成数据集,且将数据集名称更改为“SqlDs1”。(3)利用属性窗口设置数据绑定。)利用属性窗口设置数据绑定。先选中窗体中的先选中窗体中的ComboBox1控件,然控件,然后在后在“属性属性”窗口展开窗口展开DataBindings节点,节点,单击单击Text属性设置框右侧的向下箭头按钮,属性设置框右侧的向下箭头按钮,将下拉列表框中的将下拉列表框中的SqlDs1逐级展开,接着逐级展开,接着单击选择单击选择“学生信息学生信息”数据表中的第一个数据表中的第一个字段字段“学号学号”,如图,如图10-4所示。所示。图图10-410-4在属性窗口中设
13、置单一绑定在属性窗口中设置单一绑定 这样这样ComboBox1控件的控件的Text属性和属性和“SqlDs1”数据集中的数据集中的“学生信息学生信息”数据数据表中的表中的“学号学号”字段相绑定。字段相绑定。窗体中的窗体中的TextBox控件与数据表控件与数据表SqlDs1中的数据表中的中的数据表中的“学生信息学生信息”的字段的字段“姓姓名名”进行绑定的方法与上述相同。进行绑定的方法与上述相同。选中窗体中的选中窗体中的ComboBox3控件,在属控件,在属性窗口中设置性窗口中设置DataSource属性的值为属性的值为“SqlDs1.学生信息学生信息”,设置,设置DisplayMember属性的
14、值为属性的值为“班级编号班级编号”,如图,如图10-5所示。所示。图图10-510-5在属性窗口设置复合绑定在属性窗口设置复合绑定 (4)切换到代码窗口,编写程序代)切换到代码窗口,编写程序代码,实现其功能。码,实现其功能。窗体窗体Load事件过程的程序代码如代码事件过程的程序代码如代码10-2-1所示。所示。ComboBox1控件的控件的SelectedIndexChanged事件过程的程序代事件过程的程序代码如代码码如代码10-2-2所示。所示。3代码分析代码分析代码分析如表代码分析如表10-4所示。所示。代代码码序号序号行行 号号代代 码码 分分 析析代代码码10-2-210-2-201
15、01行行当当ComboBox1ComboBox1控件中的控件中的选选取取项发项发生生改改变时变时,窗体中的其他控件所,窗体中的其他控件所显显示示的的记录记录数据也同步数据也同步发发生改生改变变0202行行取消取消DataGrid1DataGrid1控件中原先控件中原先选选中行中行的的选选中状中状态态0303行行重新重新设设置置DataGrid1DataGrid1控件控件选选定行的定行的索引索引0404行行重新重新选择选择新行新行表表10-410-4程序代码分析程序代码分析 4知识要点说明知识要点说明在设计阶段利用属性窗口进行数据绑在设计阶段利用属性窗口进行数据绑定,必须先建立数据集对象,否则无
16、法完定,必须先建立数据集对象,否则无法完成属性设置。如果在设计时已经绑定了某成属性设置。如果在设计时已经绑定了某个控件,则在程序代码中不可以对该属性个控件,则在程序代码中不可以对该属性再进行绑定,否则会出错。再进行绑定,否则会出错。10.2.2编写程序代码实现数编写程序代码实现数据绑定据绑定【实例实例10-2】1设计任务设计任务设计一个窗体,该窗体使用编写程序设计一个窗体,该窗体使用编写程序代码的方法实现数据绑定,窗体的运行效代码的方法实现数据绑定,窗体的运行效果如图果如图10-6所示。所示。ComboBox3控件显示的控件显示的是是“班级名称班级名称”列表项,而不是列表项,而不是“班级编班级
17、编号号”,其他的显示内容与实例,其他的显示内容与实例10-1相同。相同。图图10-610-6编写程序代码实现数据绑定编写程序代码实现数据绑定 2设计过程设计过程(1)新建一个项目)新建一个项目Chapter10_2。(2)窗体及控件的设计外观如图)窗体及控件的设计外观如图10-3所示,只是将所示,只是将“班级编号班级编号”标签的标签的Text属性值修改为属性值修改为“班级名称班级名称”。(3)切换到代码窗口,编写程序代)切换到代码窗口,编写程序代码,实现其功能。码,实现其功能。窗体级对象变量的定义如代码窗体级对象变量的定义如代码10-2-3所所示。示。窗体窗体Load事件过程的程序代码如代码事
18、件过程的程序代码如代码10-2-4所示。所示。ComboBox1控件的控件的SelectedIndexChanged事件过程的程序代事件过程的程序代码如代码码如代码10-2-5所示。所示。3代码分析代码分析代码分析如表代码分析如表10-5所示。所示。代代 码码 序序 号号行行 号号代代 码码 分分 析析代代码码10-2-410-2-40404行和行和0505行行重新重新设设置提取数据源置提取数据源记录记录的的SelectSelect语语句句0909行和行和1010行行设设置置ComboBox1ComboBox1控件的数据源以及控件的数据源以及绑绑定的字段定的字段1313行行将将TextBox1
19、TextBox1控件的控件的TextText属性与数据集属性与数据集SqlDsSqlDs中的中的“学生信息学生信息”表表的的“姓名姓名”字段字段进进行行绑绑定定1515行和行和1616行行先建立一个字符串数先建立一个字符串数组组,然后将,然后将ComboBox2ComboBox2控件的控件的DataSourceDataSource属性属性设设置置为该为该数数组组,让让数数组组所包含的元素成所包含的元素成为该为该控件的控件的选项选项1919行至行至2121行行设设置置ComboBox3ComboBox3的数据源的数据源对对象,同象,同时时将将DisplayMemberDisplayMember属
20、性和属性和ValueMemberValueMember属性属性设设置置为为数据源中的不同字段数据源中的不同字段2222行行将将SelectedValueSelectedValue属性与所要写入的字段属性与所要写入的字段“班班级编级编号号”进进行行绑绑定定2424行行将将DataGrid1DataGrid1控件和数据集控件和数据集SqlDsSqlDs中的中的“学生信息学生信息”数据表数据表绑绑定定2525行行设设置置DataGrid1DataGrid1控件的控件的标题标题文本文本表表10-510-5程序代码分析程序代码分析10.310.3记记 录录 导导 航航 【实例实例10-310-3】1设计
21、任务设计任务 设计一个窗体,该窗体具有记录导航设计一个窗体,该窗体具有记录导航功能,窗体的运行效果如图功能,窗体的运行效果如图10-710-7所示。该所示。该窗体通过改变记录位置浏览不同的记录数窗体通过改变记录位置浏览不同的记录数据。据。图图10-710-7记录导航窗体的运行结果记录导航窗体的运行结果 单击单击【首记录首记录】按钮按钮,显示数据,显示数据表中的第一条记录;单击表中的第一条记录;单击【上一条上一条】按钮按钮,显示数据表中的上一条记录;单击,显示数据表中的上一条记录;单击【下下一条一条】按钮按钮,显示下一条记录;单击,显示下一条记录;单击【尾记录尾记录】按钮按钮,显示最后一条记录。
22、,显示最后一条记录。该窗体还能显示目前位于第几条记录该窗体还能显示目前位于第几条记录以及总共有多少条记录。以及总共有多少条记录。2设计过程设计过程(1)新建一个项目)新建一个项目Chapter10_3。(2)在窗体中添加)在窗体中添加5个个TextBox控件、控件、4个个Button控件和控件和4个个Label控件,窗控件,窗体及控件的设计外观如图体及控件的设计外观如图10-8所示。所示。(3)切换到代码窗口,编写程序代)切换到代码窗口,编写程序代码,实现其功能。码,实现其功能。图图10-810-8记录导航窗体的设计状态记录导航窗体的设计状态 3代码分析代码分析代码分析如表代码分析如表10-6
23、所示。所示。代代码码序号序号行行 号号代代 码码 分分 析析代代码码10-3-110-3-10707行至行至1010行行将将TextBoxTextBox控件和数据集中表的各个字段控件和数据集中表的各个字段进进行行绑绑定定1212行行为为前面声明的前面声明的BindingManagerBaseBindingManagerBase类类的的变变量量bmDatabmData赋值赋值,使用,使用该变该变量代表量代表“学生信息学生信息”表表的的CurrencyManagerCurrencyManager对对象,在其后需要使用代象,在其后需要使用代表表“学生信息学生信息”表的表的CurrencyManage
24、rCurrencyManager对对象象时时,就可以直接使用就可以直接使用bmDatabmData变变量而不需要使用量而不需要使用BindingContextBindingContext类类来来获获取,使得程序代取,使得程序代码码容容易易维护维护,也可以,也可以缩缩短程序代短程序代码码的的长长度度1414行行设设定当触定当触发发PositionChangedPositionChanged事件事件时时便便执执行事行事件件处处理程序理程序PositionChangedPositionChanged1616行和行和1717行行设设定数据定数据记录记录当前位置的初始当前位置的初始值值表表10-610-
25、6程序代码分析程序代码分析 代代码码10-3-210-3-20303行和行和0404行行利用利用CurrencyManagerCurrencyManager对对象的象的PositionPosition属性更新属性更新记录记录当前位置的当前位置的信息,利用信息,利用CurrencyManagerCurrencyManager对对象象的的CountCount属性取得数据源中的属性取得数据源中的记录记录的的总总数数代代码码10-3-310-3-30303行行将将CurrencyManagerCurrencyManager对对象的象的PositionPosition属性属性值设值设置置为为0 0,以便
26、移,以便移到第一条到第一条记录记录 代代码码10-3-410-3-40404行行把把CurrencyManagerCurrencyManager对对象的象的PositionPosition属性属性值值减减1 1移到上一条移到上一条记录记录。ifif语语句用于句用于检查检查是否已移是否已移动动到第一条到第一条记录记录之前,由于之前,由于PositionPosition属性属性值值是从是从0 0开始开始计计算,只有当算,只有当PositionPosition属性属性值值大于大于0 0时时才能才能递递减减 代代码码10-3-510-3-50404行行把把CurrencyManagerCurrency
27、Manager对对象的象的PositionPosition属性属性值值加加1 1移到下一条移到下一条记录记录。ifif语语句用于句用于检查检查是否已移到最后一条是否已移到最后一条记录记录之后,只有当之后,只有当PositionPosition属性属性值值小于小于CountCount属性属性值值减减1 1才才能能递递增增代代码码10-3-610-3-60303行行把把CurrencyManagerCurrencyManager对对象的象的PositionPosition属性属性值设值设置置为为CountCount属性属性值值减减1 1移移动动到最后一到最后一条数据条数据记录记录 【课堂实践课堂实
28、践】打开光盘中文件夹打开光盘中文件夹【ClassroomPractise10_1】中的解决方案文中的解决方案文件件【ClassroomPractise10_1.sln】,打开,打开该解决方案中的窗体该解决方案中的窗体【frmUsers.vb】,切,切换到代码窗体,在窗体的换到代码窗体,在窗体的Load事件过程中事件过程中补写程序代码实现数据绑定,包括设置补写程序代码实现数据绑定,包括设置DataGrid、TextBox和和ComboBox等多种类等多种类型控件的绑定。该窗体的运行结果如图型控件的绑定。该窗体的运行结果如图10-9所示。所示。图图10-910-9数据绑定记录导航数据绑定记录导航 【课外拓展实践课外拓展实践】参考如图参考如图10-12所示的窗体,设计所示的窗体,设计【读读者数据管理者数据管理】窗体,注意不同类型控件的窗体,注意不同类型控件的数据绑定方法。数据绑定方法。图图10-1210-12读者数据管理窗体读者数据管理窗体 【本章小结本章小结】本章主要介绍了数据绑定的方式、对本章主要介绍了数据绑定的方式、对象与清除方法,也介绍了实现数据绑定的象与清除方法,也介绍了实现数据绑定的多种方法和记录导航的方法。多种方法和记录导航的方法。