(第10章)-數(shù)據(jù)綁定與記錄導(dǎo)航課件_第1頁
(第10章)-數(shù)據(jù)綁定與記錄導(dǎo)航課件_第2頁
(第10章)-數(shù)據(jù)綁定與記錄導(dǎo)航課件_第3頁
(第10章)-數(shù)據(jù)綁定與記錄導(dǎo)航課件_第4頁
(第10章)-數(shù)據(jù)綁定與記錄導(dǎo)航課件_第5頁
已閱讀5頁,還剩55頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、 第 10 章數(shù)據(jù)綁定與記錄導(dǎo)航 第 10 章 數(shù)據(jù)綁定概述10.1數(shù)據(jù)綁定的實(shí)現(xiàn)方法10.2記 錄 導(dǎo) 航10.3 數(shù)據(jù)綁定概述10.1數(shù)據(jù)綁定的實(shí)現(xiàn)方法10.2記 錄 對(duì)于各種類型的數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng),通過Windows界面或Web網(wǎng)頁瀏覽數(shù)據(jù)源中的數(shù)據(jù)時(shí),一般先將后臺(tái)數(shù)據(jù)表中的數(shù)據(jù)填充到內(nèi)存的數(shù)據(jù)集中,然后展現(xiàn)在Windows界面或者Web網(wǎng)頁中。 對(duì)于各種類型的數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng),通過Win 本章主要學(xué)習(xí)ADO.NET的數(shù)據(jù)綁定技術(shù)和記錄導(dǎo)航。 本章主要學(xué)習(xí)ADO.NET的數(shù)據(jù)綁定技術(shù)和 【知識(shí)技能目標(biāo)】(1)掌握數(shù)據(jù)綁定的方式、對(duì)象與清除方法。(2)掌握使用屬性窗口實(shí)現(xiàn)數(shù)據(jù)綁定的方法。(3)

2、掌握編寫程序代碼實(shí)現(xiàn)數(shù)據(jù)綁定的方法。(4)掌握ADO.NET中記錄導(dǎo)航的方法。(5)了解數(shù)據(jù)綁定與記錄導(dǎo)航涉及的類。 【知識(shí)技能目標(biāo)】 【本章學(xué)習(xí)導(dǎo)航】 本章主要探討數(shù)據(jù)綁定和記錄導(dǎo)航兩個(gè)問題,這兩個(gè)問題都會(huì)涉及到幾個(gè)相同的類,ADO.NET訪問數(shù)據(jù)庫(kù)時(shí)記錄位置的移動(dòng)機(jī)制與ADO不同,主要通過幾個(gè)對(duì)象進(jìn)行控制。 【本章學(xué)習(xí)導(dǎo)航】10.1數(shù)據(jù)綁定概述 10.1.1數(shù)據(jù)綁定的方式 窗體控件的數(shù)據(jù)綁定一般可以分為兩種方式:?jiǎn)我唤壎ê蛷?fù)合綁定。10.1數(shù)據(jù)綁定概述 10.1.1數(shù)據(jù)綁定的方 1單一綁定 所謂“單一綁定”是指將單一的數(shù)據(jù)元素綁定到控件的某個(gè)屬性。例如,將TextBox控件的Text屬性與

3、“學(xué)生信息”數(shù)據(jù)表中的“姓名”字段進(jìn)行綁定。 1單一綁定 單一綁定是利用控件的DataBindings集合屬性實(shí)現(xiàn)的,其一般形式如下。 控件名稱.DataBindings.Add ( 控件的屬性名稱 , 數(shù)據(jù)源 , 數(shù)據(jù)成員 )括號(hào)中的三個(gè)參數(shù)說明如下。 單一綁定是利用控件的DataBinding (1)控件的屬性名稱 該參數(shù)為字符串形式,指定綁定到控件的哪一個(gè)屬性。DataBindings的集合屬性允許讓控件的多個(gè)屬性與數(shù)據(jù)源進(jìn)行綁定,經(jīng)常使用的綁定屬性如表10-1所示。 (1)控件的屬性名稱 圖10-1單一綁定的錯(cuò)誤提示信息 圖10-1單一綁定的錯(cuò)誤提示信息 (2)數(shù)據(jù)源 該參數(shù)為變量形式

4、,可以是DataSet、DataTable、DataView或者數(shù)組等多種形式。 (2)數(shù)據(jù)源 (3)數(shù)據(jù)成員 該參數(shù)為字符串形式,是數(shù)據(jù)源的子集合。如果數(shù)據(jù)源是DataSet,那么數(shù)據(jù)成員就是“DataTable.字段名稱”;如果數(shù)據(jù)源是DataTable,那么數(shù)據(jù)成員就是“字段名稱”。 (3)數(shù)據(jù)成員 2復(fù)合綁定 所謂“復(fù)合綁定”是指控件和一個(gè)以上的數(shù)據(jù)元素進(jìn)行綁定,通常是指把控件和數(shù)據(jù)集中的多條數(shù)據(jù)記錄或者多個(gè)字段值、數(shù)組中的多個(gè)數(shù)組元素進(jìn)行綁定。 2復(fù)合綁定 DataGrid、ComboBox、ListBox和CheckedListBox等控件都支持復(fù)合數(shù)據(jù)綁定,例如,將DataGri

5、d控件與數(shù)據(jù)集DataSet綁定,以便同時(shí)顯示數(shù)據(jù)表中的所有數(shù)據(jù)記錄。 DataGrid、ComboBox、Lis 10.1.2數(shù)據(jù)綁定的對(duì)象 ADO.NET提供了許多能夠被綁定的數(shù)據(jù)對(duì)象,既包括一般的數(shù)據(jù)集及其成員對(duì)象,也包括數(shù)組或集合,以及窗體或其他控件的屬性。 10.1.2數(shù)據(jù)綁定的對(duì)象 (1)DataSet 可以使用單一綁定或者復(fù)合綁定來綁定DataSet內(nèi)的數(shù)據(jù)。(2)DataTable 可以使用單一綁定或復(fù)合綁定來綁定DataTable內(nèi)的數(shù)據(jù)。 (1)DataSet (3)DataView 可以使用單一綁定或復(fù)合綁定來綁定DataView內(nèi)的數(shù)據(jù)。(4)DataColumn Da

6、taColumn對(duì)象是DataTable對(duì)象的基本組成元素,可以使用單一綁定或復(fù)合綁定來綁定數(shù)據(jù)表中的某個(gè)字段的數(shù)據(jù)。 (3)DataView (5)數(shù)組或集合 數(shù)組或集合也可以作為數(shù)據(jù)綁定的對(duì)象。(6)窗體或控件屬性 Windows窗體中控件的綁定對(duì)象也可以是窗體或控件的屬性。 (5)數(shù)組或集合 10.1.3數(shù)據(jù)綁定的清除 程序運(yùn)行時(shí),對(duì)于單一綁定,同一個(gè)控件屬性不能重復(fù)進(jìn)行綁定,否則會(huì)出現(xiàn)如圖10-1所示的綁定錯(cuò)誤。 10.1.3數(shù)據(jù)綁定的清除 正確的方法是:先清除現(xiàn)有的綁定,然后再重新與數(shù)據(jù)源進(jìn)行綁定。 清除數(shù)據(jù)綁定的實(shí)例代碼如下所示。 清除窗體中所有控件的綁定的實(shí)例代碼如下所示。 正確

7、的方法是:先清除現(xiàn)有的綁定,然后再重新10.2數(shù)據(jù)綁定的實(shí)現(xiàn)方法 ADO.NET的數(shù)據(jù)綁定的實(shí)現(xiàn)方法主要有兩種:第一種方法是在設(shè)計(jì)階段使用屬性窗口設(shè)置屬性值實(shí)現(xiàn)數(shù)據(jù)綁定;第二種方法是在設(shè)計(jì)階段編寫程序代碼實(shí)現(xiàn)數(shù)據(jù)綁定。10.2數(shù)據(jù)綁定的實(shí)現(xiàn)方法 10.2.1使用屬性窗口實(shí)現(xiàn)數(shù)據(jù)綁定 在設(shè)計(jì)階段事先建立數(shù)據(jù)集的實(shí)例對(duì)象,并把數(shù)據(jù)填入該數(shù)據(jù)集中,然后利用Visual Studio.NET集成開發(fā)環(huán)境的屬性窗口進(jìn)行數(shù)據(jù)綁定。 10.2.1使用屬性窗口實(shí)現(xiàn)數(shù)據(jù)綁定 【實(shí)例10-1】 1設(shè)計(jì)任務(wù) 設(shè)計(jì)一個(gè)窗體,該窗體利用屬性窗口實(shí)現(xiàn)數(shù)據(jù)綁定。其運(yùn)行效果如圖10-2所示。 【實(shí)例10-1】 圖10-2使用

8、屬性窗口綁定數(shù)據(jù)的運(yùn)行效果 圖10-2使用屬性窗口綁定數(shù)據(jù)的運(yùn)行效果 2設(shè)計(jì)過程(1)新建一個(gè)項(xiàng)目Chapter10_1。(2)在窗體中添加4個(gè)Button控件、4個(gè)Label控件、1個(gè)TextBox控件、3個(gè)ComboBox控件和1個(gè)DataGrid控件,窗體及控件的設(shè)計(jì)外觀如圖10-3所示。 2設(shè)計(jì)過程 圖10-3數(shù)據(jù)綁定窗體的設(shè)計(jì)狀態(tài) 圖10-3數(shù)據(jù)綁定窗體的設(shè)計(jì)狀態(tài) 利用“工具箱”中的“數(shù)據(jù)”控件創(chuàng)建SqlConnection對(duì)象和SqlDataAdapter對(duì)象,分別更改名稱為“conn”和“SqlDa”。生成數(shù)據(jù)集,且將數(shù)據(jù)集名稱更改為“SqlDs1”。 利用“工具箱”中的“數(shù)據(jù)”

9、控件創(chuàng)建SqlC (3)利用屬性窗口設(shè)置數(shù)據(jù)綁定。 先選中窗體中的ComboBox1控件,然后在“屬性”窗口展開DataBindings節(jié)點(diǎn),單擊Text屬性設(shè)置框右側(cè)的向下箭頭按鈕,將下拉列表框中的SqlDs1逐級(jí)展開,接著單擊選擇“學(xué)生信息”數(shù)據(jù)表中的第一個(gè)字段“學(xué)號(hào)”,如圖10-4所示。 (3)利用屬性窗口設(shè)置數(shù)據(jù)綁定。 圖10-4在屬性窗口中設(shè)置單一綁定 圖10-4在屬性窗口中設(shè)置單一綁定 這樣ComboBox1控件的Text屬性和“SqlDs1”數(shù)據(jù)集中的“學(xué)生信息”數(shù)據(jù)表中的“學(xué)號(hào)”字段相綁定。 這樣ComboBox1控件的Text屬性 窗體中的TextBox控件與數(shù)據(jù)表SqlDs

10、1中的數(shù)據(jù)表中的“學(xué)生信息”的字段“姓名”進(jìn)行綁定的方法與上述相同。 窗體中的TextBox控件與數(shù)據(jù)表SqlD 選中窗體中的ComboBox3控件,在屬性窗口中設(shè)置DataSource屬性的值為“SqlDs1.學(xué)生信息”,設(shè)置DisplayMember屬性的值為“班級(jí)編號(hào)”,如圖10-5所示。 選中窗體中的ComboBox3控件,在屬性 圖10-5在屬性窗口設(shè)置復(fù)合綁定 圖10-5在屬性窗口設(shè)置復(fù)合綁定 (4)切換到代碼窗口,編寫程序代碼,實(shí)現(xiàn)其功能。 窗體Load事件過程的程序代碼如代碼10-2-1所示。 ComboBox1控件的SelectedIndexChanged事件過程的程序代碼如

11、代碼10-2-2所示。 (4)切換到代碼窗口,編寫程序代碼,實(shí)現(xiàn)其功能。 3代碼分析 代碼分析如表10-4所示。 3代碼分析 代碼序號(hào)行 號(hào)代 碼 分 析代碼10-2-201行當(dāng)ComboBox1控件中的選取項(xiàng)發(fā)生改變時(shí),窗體中的其他控件所顯示的記錄數(shù)據(jù)也同步發(fā)生改變02行取消DataGrid1控件中原先選中行的選中狀態(tài)03行重新設(shè)置DataGrid1控件選定行的索引04行重新選擇新行表10-4程序代碼分析 代碼序號(hào)行 號(hào)代 碼 分 析代碼10-2-201行當(dāng)Com 4知識(shí)要點(diǎn)說明 在設(shè)計(jì)階段利用屬性窗口進(jìn)行數(shù)據(jù)綁定,必須先建立數(shù)據(jù)集對(duì)象,否則無法完成屬性設(shè)置。如果在設(shè)計(jì)時(shí)已經(jīng)綁定了某個(gè)控件,

12、則在程序代碼中不可以對(duì)該屬性再進(jìn)行綁定,否則會(huì)出錯(cuò)。 4知識(shí)要點(diǎn)說明 10.2.2編寫程序代碼實(shí)現(xiàn)數(shù)據(jù)綁定 【實(shí)例10-2】 1設(shè)計(jì)任務(wù) 設(shè)計(jì)一個(gè)窗體,該窗體使用編寫程序代碼的方法實(shí)現(xiàn)數(shù)據(jù)綁定,窗體的運(yùn)行效果如圖10-6所示。ComboBox3控件顯示的是“班級(jí)名稱”列表項(xiàng),而不是“班級(jí)編號(hào)”,其他的顯示內(nèi)容與實(shí)例10-1相同。 10.2.2編寫程序代碼實(shí)現(xiàn)數(shù)據(jù)綁定 圖10-6編寫程序代碼實(shí)現(xiàn)數(shù)據(jù)綁定 圖10-6編寫程序代碼實(shí)現(xiàn)數(shù)據(jù)綁定 2設(shè)計(jì)過程(1)新建一個(gè)項(xiàng)目Chapter10_2。(2)窗體及控件的設(shè)計(jì)外觀如圖10-3所示,只是將“班級(jí)編號(hào)”標(biāo)簽的Text屬性值修改為“班級(jí)名稱”。(3

13、)切換到代碼窗口,編寫程序代碼,實(shí)現(xiàn)其功能。 2設(shè)計(jì)過程 窗體級(jí)對(duì)象變量的定義如代碼10-2-3所示。 窗體Load事件過程的程序代碼如代碼10-2-4所示。 ComboBox1控件的SelectedIndexChanged事件過程的程序代碼如代碼10-2-5所示。 窗體級(jí)對(duì)象變量的定義如代碼10-2-3所示 3代碼分析 代碼分析如表10-5所示。 3代碼分析 代 碼 序 號(hào)行 號(hào)代 碼 分 析代碼10-2-404行和05行重新設(shè)置提取數(shù)據(jù)源記錄的Select語句09行和10行設(shè)置ComboBox1控件的數(shù)據(jù)源以及綁定的字段13行將TextBox1控件的Text屬性與數(shù)據(jù)集SqlDs中的“學(xué)生

14、信息”表的“姓名”字段進(jìn)行綁定15行和16行先建立一個(gè)字符串?dāng)?shù)組,然后將ComboBox2控件的DataSource屬性設(shè)置為該數(shù)組,讓數(shù)組所包含的元素成為該控件的選項(xiàng)19行至21行設(shè)置ComboBox3的數(shù)據(jù)源對(duì)象,同時(shí)將DisplayMember屬性和ValueMember屬性設(shè)置為數(shù)據(jù)源中的不同字段22行將SelectedValue屬性與所要寫入的字段“班級(jí)編號(hào)”進(jìn)行綁定24行將DataGrid1控件和數(shù)據(jù)集SqlDs中的“學(xué)生信息”數(shù)據(jù)表綁定25行設(shè)置DataGrid1控件的標(biāo)題文本表10-5程序代碼分析 代 碼 序 號(hào)行 號(hào)代 碼 分 析代碼10-2-4010.3記 錄 導(dǎo) 航 【實(shí)

15、例10-3】 1設(shè)計(jì)任務(wù) 設(shè)計(jì)一個(gè)窗體,該窗體具有記錄導(dǎo)航功能,窗體的運(yùn)行效果如圖10-7所示。該窗體通過改變記錄位置瀏覽不同的記錄數(shù)據(jù)。10.3記 錄 導(dǎo) 航 【實(shí)例10-3】 圖10-7記錄導(dǎo)航窗體的運(yùn)行結(jié)果 圖10-7記錄導(dǎo)航窗體的運(yùn)行結(jié)果 單擊【首記錄】按鈕 ,顯示數(shù)據(jù)表中的第一條記錄;單擊【上一條】按鈕 ,顯示數(shù)據(jù)表中的上一條記錄;單擊【下一條】按鈕 ,顯示下一條記錄;單擊【尾記錄】按鈕 ,顯示最后一條記錄。 單擊【首記錄】按鈕 ,顯 該窗體還能顯示目前位于第幾條記錄以及總共有多少條記錄。 該窗體還能顯示目前位于第幾條記錄以及總共有 2設(shè)計(jì)過程(1)新建一個(gè)項(xiàng)目Chapter10_3

16、。(2)在窗體中添加5個(gè)TextBox控件、4個(gè)Button控件和4個(gè)Label控件,窗體及控件的設(shè)計(jì)外觀如圖10-8所示。(3)切換到代碼窗口,編寫程序代碼,實(shí)現(xiàn)其功能。 2設(shè)計(jì)過程 圖10-8記錄導(dǎo)航窗體的設(shè)計(jì)狀態(tài) 圖10-8記錄導(dǎo)航窗體的設(shè)計(jì)狀態(tài) 3代碼分析 代碼分析如表10-6所示。 3代碼分析 代碼序號(hào)行 號(hào)代 碼 分 析代碼10-3-107行至10行將TextBox控件和數(shù)據(jù)集中表的各個(gè)字段進(jìn)行綁定12行為前面聲明的BindingManagerBase類的變量bmData賦值,使用該變量代表“學(xué)生信息”表的CurrencyManager對(duì)象,在其后需要使用代表“學(xué)生信息”表的Cur

17、rencyManager對(duì)象時(shí),就可以直接使用bmData變量而不需要使用BindingContext類來獲取,使得程序代碼容易維護(hù),也可以縮短程序代碼的長(zhǎng)度14行設(shè)定當(dāng)觸發(fā)PositionChanged事件時(shí)便執(zhí)行事件處理程序PositionChanged16行和17行設(shè)定數(shù)據(jù)記錄當(dāng)前位置的初始值表10-6程序代碼分析 代碼序號(hào)行 號(hào)代 碼 分 析代碼10-3-107行至 代碼10-3-203行和04行利用CurrencyManager對(duì)象的Position屬性更新記錄當(dāng)前位置的信息,利用CurrencyManager對(duì)象的Count屬性取得數(shù)據(jù)源中的記錄的總數(shù)代碼10-3-303行將Cur

18、rencyManager對(duì)象的Position屬性值設(shè)置為0,以便移到第一條記錄 代碼10-3-203行和04行利用CurrencyMana 代碼10-3-404行把CurrencyManager對(duì)象的Position屬性值減1移到上一條記錄。if語句用于檢查是否已移動(dòng)到第一條記錄之前,由于Position屬性值是從0開始計(jì)算,只有當(dāng)Position屬性值大于0時(shí)才能遞減 代碼10-3-404行把CurrencyManager對(duì)象 代碼10-3-504行把CurrencyManager對(duì)象的Position屬性值加1移到下一條記錄。if語句用于檢查是否已移到最后一條記錄之后,只有當(dāng)Position屬性值小于Count屬性值減1才能遞增代碼10-3-603行把CurrencyManager對(duì)象的Position屬性值設(shè)置為Count屬性值減1移動(dòng)到最后一條數(shù)據(jù)記錄 代碼10-3-504行把CurrencyManager對(duì)象 【課堂實(shí)踐】 打開光盤中文件夾【ClassroomPractise10_1】中的解決方案文件【ClassroomPractise10_ 1.sln】,打開該解決方案中的窗體【

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論