版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第8章使用C#開發(fā)Windows數(shù)據(jù)庫應(yīng)用程序
簡單數(shù)據(jù)綁訂復(fù)雜數(shù)據(jù)綁訂數(shù)據(jù)源的類型DataGrid的使用Windows應(yīng)用程序開發(fā)實(shí)例
本章要點(diǎn)8.1數(shù)據(jù)綁定數(shù)據(jù)綁定是指數(shù)據(jù)源元素與圖形界面的接口技術(shù),如使用TextBox控件綁定到表中的單個(gè)值。窗體控件可以按照兩種方式綁定數(shù)據(jù):簡單數(shù)據(jù)綁定和復(fù)雜數(shù)據(jù)綁定。Windows數(shù)據(jù)綁定控件(如Label、Button或TextBox能夠綁定數(shù)據(jù),因?yàn)锽inding類提供了這樣的功能(System.Windows.Forms.Binding),這個(gè)類由.NETFramework提供,負(fù)責(zé)在每個(gè)控件屬性和數(shù)據(jù)源中的數(shù)據(jù)元素之間創(chuàng)建簡單的綁定。如:textBox1.DataBindings.Add(″Text″,da,″Employees.FirstName″);控件的DataBindings屬性可以使用Add方法添加其中的每個(gè)屬性。Add方法有三個(gè)參數(shù)。第一個(gè)參數(shù)是控件屬性的名稱,如TextBox控件的Text屬性或者DataGrid控件的DataSource屬性。第二個(gè)參數(shù)是下列任意類,或者實(shí)現(xiàn)下列任意接口的類的實(shí)例,如表8-1列出幾個(gè)接口及實(shí)現(xiàn)這些接口的類。第三個(gè)參數(shù)描述數(shù)據(jù)源中的數(shù)據(jù)成員。它是必須能轉(zhuǎn)化為標(biāo)量值的字符串文字,如使用DataSet時(shí)要根據(jù)表名稱所選的列。表8-1可用于Binding類構(gòu)造函數(shù)的第二個(gè)參數(shù)的類接口實(shí)現(xiàn)接口的一些類ICollectionArray,BitArrayIListSourceDataSet,DataTableITypedListDataView,DataViewManager如果想顯式聲明Binding對(duì)象,則可以使用類似下面的代碼,例如,想把TextBox控件的Text屬性綁定到表中的數(shù)據(jù)元素上。BindingnewBind=newBinding(″Text″,ds,″Employees.FirstName″);textBox1.DataBindings.Add(newBind);8.1.1簡單數(shù)據(jù)綁定簡單數(shù)據(jù)綁定是指每個(gè)控件屬性與數(shù)據(jù)源的單一元素之間的一對(duì)一關(guān)系。下面的例子演示簡單數(shù)據(jù)綁定,將一組TextBox控件上的Text屬性綁定到作為客戶列表存儲(chǔ)的Customer對(duì)象的屬性。在控件上使用DataBindings集合添加簡單數(shù)據(jù)綁定。textBoxID.DataBindings.Add("Text",custList,"CustomerID");textBoxTitle.DataBindings.Add("Text",custList,"ContactTitle");textBoxLastName.DataBindings.Add("Text",custList,"ContactName");textBoxFirstName.DataBindings.Add("Text",custList,"CompanyName");textBoxAddress.DataBindings.Add("Text",custList,"Address");每個(gè)TextBox.Text都綁定到當(dāng)前Customer對(duì)象,如同BindingContext進(jìn)行維護(hù)一樣。若要更改當(dāng)前對(duì)象,可使用BindingContext遞增或遞減集合的Position屬性。例如,通過按如下所示處理按鈕的Click事件實(shí)現(xiàn)MoveNext按鈕。privatevoidbuttonMoveNext_Click(objectsender,System.EventArgse){this.BindingContext[custList].Position++;}每當(dāng)位置更改時(shí),BindingContext引發(fā)一個(gè)事件。this.BindingContext[custList].PositionChanged+=newSystem.EventHandler(customer_PositionChanged);privatevoidcustomer_PositionChanged(objectsender,System.EventArgse){textBoxPosition.Text="Record"+(this.BindingContext[custList].Position+1)+
"of"+custList.Length;}8.1.2復(fù)雜數(shù)據(jù)綁定
復(fù)雜數(shù)據(jù)綁定指將控件綁定到集合(而不是將控件綁定到集合內(nèi)的單個(gè)項(xiàng))。下面的代碼將ComboBox綁定到State對(duì)象的一個(gè)數(shù)組。publicstructState{privatestringshortName,longName;publicState(stringlongName,stringshortName){this.shortName=shortName;this.longName=longName;}publicstringShortName{get{returnshortName;}}publicstringLongName{get{returnlongName;}}}privateState[]States=newState[]{newState("Alabama","AL"),newState("Washington","WA),}comboBoxState.DataSource=States;comboBoxState.DisplayMember="LongName";8.2數(shù)據(jù)源的類型8.2.1數(shù)組作為數(shù)據(jù)源在大多數(shù)情況下,Array最適合于存儲(chǔ)和檢索一致的數(shù)據(jù)。數(shù)組在運(yùn)行時(shí)支持對(duì)數(shù)據(jù)的處理,且容易在代碼中通過ICollection接口使用。例如,privatevoidForm1_Load(objectsender,System.EventArgse){String[]book=newString[]{"操作系統(tǒng)","2005年4月","25.00元"};textBox1.DataBindings.Add("Text",book,null);}例如編寫如下代碼可以實(shí)現(xiàn)數(shù)組元素遍歷的功能:BindingManagerBasebManager=this.BindingContext[book,null];bManager.Position+=1;8.2.2數(shù)據(jù)表作為數(shù)據(jù)源DataTable類實(shí)現(xiàn)IListSource接口。DataTable數(shù)據(jù)源既可用于簡單綁定例子,也可用于復(fù)雜綁定例子。把DataTable綁定到控件可以有兩種方式,一種是把整個(gè)表綁定到支持復(fù)雜綁定的控件上(可以一次顯示多個(gè)記錄的控件),另一種是把單個(gè)的列綁定到支持簡單綁定的控件上。下面這個(gè)例子把ListBox控件綁定到了從填充過的DataSet提取的DataTable對(duì)象上,如下面的代碼所示:DataTablemyTable=ds.Tables[″Employees″];listBox1.DataSource=myTable;listBox1.DisplayMember=″FirstName″;下面的代碼通過給DataBindings集合添加綁定以及將DataTable中的列名作為數(shù)據(jù)成員,把文本框綁定到DataTable上實(shí)現(xiàn)了簡單數(shù)據(jù)綁定。textBox1.DataBindings.Add(″Text″,myTable,″FirstName");8.2.3數(shù)據(jù)集作為數(shù)據(jù)源數(shù)據(jù)集DataSet類實(shí)現(xiàn)IlistSource接口。因?yàn)镈ataSet的數(shù)據(jù)綁定快速而直觀,而且可以實(shí)現(xiàn)與數(shù)據(jù)源斷開連接。這使它成為數(shù)據(jù)綁定控件的重要數(shù)據(jù)源之一。下面的代碼把DataSet綁定到一個(gè)頁面的兩個(gè)Label控件上,這些代碼被放置在Form_Load事件處理程序中://填充數(shù)據(jù)集da.Fill(ds,″Products″)首先,用Northwind數(shù)據(jù)庫的Products表中的數(shù)據(jù)填充DataSet。接著,把特定的字段綁定到兩個(gè)把textBox控件上://把textBox1的Text綁定到ProductName列上textBox1.DataBindings.Add(″Text″,ds,″Products.ProductName″);//把textBox2的Text綁定到UnitPrice列上textBox2.DataBindings.Add(″Text″,ds,″Products.UnitPrice″);如果要瀏覽數(shù)據(jù),同樣可以使用BindingManager來實(shí)現(xiàn)這個(gè)功能。8.2.4數(shù)據(jù)視圖作為數(shù)據(jù)源DataView類實(shí)現(xiàn)ItypedList接口,提供DataTable的可定制視圖。綁定到DataView對(duì)象像綁定到DataTable對(duì)象一樣簡單,因?yàn)镈ataView提供了DataTable內(nèi)容的動(dòng)態(tài)視圖。下面的代碼實(shí)現(xiàn)了將數(shù)據(jù)綁定到數(shù)據(jù)視圖://填充數(shù)據(jù)集da.Fill(ds,″Employees″);DataTablemyTable=ds.Tables[″Employees″];//創(chuàng)建一個(gè)數(shù)據(jù)視圖DataViewdv=newDataView(myTable,″Country=’USA’″,″FirstName″,DataViewRowState.CurrentRows);//綁定到FirstName列textBox1.DataBindings.Add(″Text″,dv,″FirstName″);//綁定到FirstName列textBox2.DataBindings.Add(″Text″,dv,″LastName″);本例代碼首先用數(shù)據(jù)填充DataSet,接著創(chuàng)建DataTable,然后使用DataView對(duì)象提取數(shù)據(jù),從DataTable對(duì)象的表中選擇住在美國的所有雇員的姓名列,最后進(jìn)行數(shù)據(jù)綁定。8.3DataGrid的使用8.3.1使用DataGrid顯示數(shù)據(jù)DataGrid可以為數(shù)據(jù)集提供用戶界面、相關(guān)表之間的導(dǎo)航功能以及豐富的格式設(shè)置和編輯功能。數(shù)據(jù)的顯示和操作是兩種不同的功能:用戶界面由控件處理,而數(shù)據(jù)更新由Windows窗體數(shù)據(jù)綁定結(jié)構(gòu)和.NETFramework數(shù)據(jù)提供程序來處理。因此,綁定到同一個(gè)數(shù)據(jù)源的多個(gè)控件將保持同步。為了使DataGrid控件起作用,應(yīng)在設(shè)計(jì)時(shí)使用DataSource和DataMember屬性,或在運(yùn)行時(shí)使用SetDataBinding方法將其綁定到數(shù)據(jù)源。這種綁定使DataGrid指向?qū)嵗臄?shù)據(jù)源對(duì)象(如DataSet或DataTable),同時(shí)DataGrid控件顯示對(duì)數(shù)據(jù)所執(zhí)行操作的結(jié)果。大多數(shù)數(shù)據(jù)特定的操作都是通過數(shù)據(jù)源而不是DataGrid來執(zhí)行。在DataGrid中一次只能顯示一個(gè)表。如果在表之間定義了父子關(guān)系,則用戶可以在相關(guān)表之間移動(dòng)以選擇要在DataGrid控件中顯示的表。對(duì)于DataGrid有效的數(shù)據(jù)源包括:DataTable類,DataView類,DataSet類和DataViewManager類。DataGrid控件可
溫馨提示
- 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. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 養(yǎng)老院老人心理健康制度
- 養(yǎng)老院老人緊急救援人員職業(yè)發(fā)展規(guī)劃制度
- 質(zhì)量管理體系制度
- 《運(yùn)動(dòng)健康模板》課件
- 房屋權(quán)屬轉(zhuǎn)移合同(2篇)
- 2024年度市政綠化工程土石方施工補(bǔ)充合同6篇
- 2024年教育軟件銷售與授權(quán)合同3篇
- 《修煉執(zhí)行智慧》課件
- 2025年文山道路客貨運(yùn)輸從業(yè)資格證b2考試題庫
- 2025年昭通下載b2貨運(yùn)從業(yè)資格證模擬考試考試
- 收貨確認(rèn)單模版
- 處理班級(jí)突發(fā)事件方法處理班級(jí)糾紛案例分析
- 《時(shí)代廣場的蟋蟀》閱讀試題(含答案)三套
- 屋面防水報(bào)價(jià)單
- 實(shí)用牛津樹授課PPT27. ORT-PreK-L27-The-Dream-200602105041-200815212000
- 實(shí)驗(yàn)訓(xùn)練3數(shù)據(jù)增刪改操作
- 《給數(shù)學(xué)教學(xué)添一道“味”:基于繪本的小學(xué)低段數(shù)學(xué)教學(xué)內(nèi)容創(chuàng)生研》讀書筆記模板
- 妊娠劇吐的護(hù)理查房【產(chǎn)科】-課件
- 部編版五年級(jí)語文下冊 祖父的園子 教學(xué)課件(第1課時(shí))
- 部編新人教版語文六年級(jí)上冊期中易讀錯(cuò)寫錯(cuò)字匯總
- 新概念英語第一冊課文完整版
評(píng)論
0/150
提交評(píng)論