零基礎學3.5 數(shù)據(jù)綁定_第1頁
零基礎學3.5 數(shù)據(jù)綁定_第2頁
零基礎學3.5 數(shù)據(jù)綁定_第3頁
零基礎學3.5 數(shù)據(jù)綁定_第4頁
零基礎學3.5 數(shù)據(jù)綁定_第5頁
已閱讀5頁,還剩16頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第5章 數(shù)據(jù)綁定在經(jīng)濟日益興旺的社會中,商業(yè)應用程序隨處可見,如銀行中的各種信息管理系統(tǒng)等,他們的核心內容都是數(shù)據(jù),可以想象一下銀行中的客戶資料信息、資金的存取等,這將是多么龐大、多么負責的數(shù)據(jù)。正是由于有了應用程序對這些數(shù)據(jù)進行管理,才使得這些數(shù)據(jù)被準確快速的處理。本章主要介紹在ASP.NET中,進行據(jù)綁定的各個方面。主要涉及到的知識點有:數(shù)據(jù)綁定概述、單值數(shù)據(jù)綁定、復值數(shù)據(jù)綁定和數(shù)據(jù)源控件進行數(shù)據(jù)綁定等操作?!颈菊吕鐓⒖迹涸创aC05】5.1 數(shù)據(jù)綁定概述數(shù)據(jù)綁定是指定在運行時將值動態(tài)地賦給控件的屬性的過程??梢詫⒖丶膶傩越壎ǖ奖磉_式、屬性、方法、集合,甚至另一個控件的屬性。數(shù)據(jù)綁定的

2、重點不是數(shù)據(jù)局部,而是綁定局部。ASP.NET的聲明性數(shù)據(jù)綁定語法僅在調用DataBind()方法時計算。該方法是頁和所有效勞器控件的方法。通常是從Page_Load事件調用DataBind(),如下所示。Protected void page_Load(Object Src ,EventArgs E)DataBind();還有一種后期綁定的靜態(tài)方法:DataBinder.Eval(),該方法用于計算后期綁定的數(shù)據(jù)綁定表達式。使用其很方便,因為其消除了開發(fā)人員為強迫值轉換所需的數(shù)據(jù)類型,而必須做的許多顯示轉換。5.2 綁定單值數(shù)據(jù)可以將單獨的控件屬性綁定到實際的任何信息上,這些信息可被解析成適

3、合于所綁定的屬性的單值。也可以將數(shù)據(jù)庫中的某個字段和單值控件進行綁定。5.2.1 綁定表達式使用數(shù)據(jù)綁定表達式,可以將控件屬性值綁定到數(shù)據(jù)。數(shù)據(jù)綁定表達式包含在“分隔符之內,并使用Eval()和Bind()函數(shù)來進行綁定。Eval()函數(shù)用于定義單向綁定,這樣不能對數(shù)據(jù)進行更新。該方法采用數(shù)據(jù)字段的值作為參數(shù)并將其作為字符串返回。Bind()方法支持讀/寫功能,所以Bind()函數(shù)用于雙向綁定。Bind()函數(shù)用于定義雙向綁定,并支持數(shù)據(jù)的更新操作。該方法可以檢索數(shù)據(jù)綁定控件的值,并將任何更改提交回數(shù)據(jù)庫。5.2.2 使用Eval()方法Eval()方法可計算數(shù)據(jù)綁定控件如GridVie控件的

4、模板中的后期綁定數(shù)據(jù)表達式。在運行時,Eval()方法調用DataBinder對象的Eval()方法,同時引用命名容器的當前數(shù)據(jù)項。命名容器通常是包含完整記錄的數(shù)據(jù)綁定控件的最小組成局部,如GridView()控件中的一行。因此,只能對數(shù)據(jù)綁定控件的模板內的綁定使用Eva()方法。asp:Label ID=訂單金額Label runat=server Text= /Eval()方法以數(shù)據(jù)字段的名稱作為參數(shù),從數(shù)據(jù)源的當前記錄返回一個包含該字段值的字符串??梢蕴峁┑诙€參數(shù)來指定返回字符串的格式,該參數(shù)為可選參數(shù)。字符串格式參數(shù)使用為String類的Format()方法定義的語法。5.2.3 使

5、用Bind()方法Bind()方法與Eval()方法有一些相似之處,但也存在很大的差異。雖然可以像使用Eval 方法一樣使用Bind()方法來檢索數(shù)據(jù)綁定字段的值,但當數(shù)據(jù)可以被修改時,還是要使用 Bind()方法。 如果已為數(shù)據(jù)源控件定義了Select、Insert、Delete和Update等SQL語句,那么通過在模板中使用Bind()方法,就可以使控件從模板中的子控件中獲取值,并將這些值傳遞給數(shù)據(jù)源控件。然后數(shù)據(jù)源控件將執(zhí)行適當?shù)腟QL命令。出于這個原因,在數(shù)據(jù)綁定控件的 EditItemTemplate模板或者InsertItemTemplate板中要使用Bind()函數(shù),如下所示的代

6、碼就使用了Bind()進行數(shù)據(jù)字段的綁定:asp:TextBox ID= TextBox runat=server Text= /Bind()方法通常與輸入控件一起使用,例如由編輯模式中的 GridView 行所呈現(xiàn)的 TextBox控件。當數(shù)據(jù)綁定控件將這些輸入控件作為自身呈現(xiàn)的一局部創(chuàng)立時,該方法便可提取輸入值。與Eval()方法相同,Bind()方法采用數(shù)據(jù)字段的名稱作為參數(shù),從而與綁定屬性關聯(lián)。5.3 綁定單值字段對于單值綁定,經(jīng)常會在工程中用到。進行單值字段綁定時,數(shù)據(jù)表達式經(jīng)常被包含在效勞器控件的屬性值中。例如: asp:TextBox ID=TextBox1 runat=serv

7、er Text= 此時,數(shù)據(jù)綁頂表達式可以是一個變量,也可以是一個帶返回值的C#或者VB.NET方 法,還可以是某個控件的屬性值,也可以是C#對象的某個字段或者屬性的值等。5.3.1 綁定屬性將一個Label控件的Text屬性綁定到Button控件,如下所示:asp:Button ID=Button1 runat=server Text=要使以上綁定成功執(zhí)行,還需要在后臺功能代碼中調用Button控件的DataBind()方法來實現(xiàn)綁定:protected void Page_Load(object sender, EventArgs e) Button1.DataBind();以上代碼執(zhí)行后

8、,將得到如圖5.1所示的效果。5.3.2 綁定C#對象中的字段在后臺功能代碼中所創(chuàng)立的字段,可直接被進行綁定,如下面的代碼所示,分別將一個公用字段和一個公用方法進行綁定。asp:Label ID=Label1 runat=server Text=asp:Label ID=Label2 runat=server Text=要正常執(zhí)行綁頂,要確保在后臺功能代碼中已經(jīng)創(chuàng)立好了一個被綁定的字段和方法,并調用了DataBind()方法,代碼如下所示。protected void Page_Load(object sender, EventArgs e) DataBind();public string

9、time = DateTime.Now.ToString();public string method() string message = 我是要被綁定的字段值!; return message;5.3.3 內聯(lián)引用方式調用C#代碼可通過內聯(lián)引用的方法,在Web前臺頁面中調用執(zhí)行C#代碼,如下面的代碼所示,直接在前臺頁面中讀取當前的時間并輸出。 瀏覽頁面后,效果如圖5.3所示。5.3.4 引用配置文件中預定義的字段可直接在頁面中調用配置文件中預定義的字段,將該字段進行綁定,如下代碼所示。首先在web.config文件中添加如下所示的配置信息: 然后在頁面中進行如下所示的綁定: asp:Lab

10、el ID=Label1 runat=server Text=瀏覽頁面,效果如圖5.4所示。5.4 綁定復值數(shù)據(jù)實際應用中,經(jīng)常會遇到將數(shù)據(jù)庫中的某個字段顯示到一個列表中,如網(wǎng)上商城頁面中商品的分類列表、注冊表單中下拉列表形式的地址選擇等。這些信息大局部都被存儲在數(shù)據(jù)庫中以方便進行管理維護。如何將這些單個字段的所有值綁定到一個具有列表特性的控件中,這就要用到這節(jié)中將要介紹的復值數(shù)據(jù)綁定。在ASP.NET中,支持數(shù)據(jù)綁定的標準控件有以下幾個:DropDownListListBoxCheckBoxListRadioButtonListBulletedList5.5 數(shù)據(jù)源控件ASP.NET中提供了

11、多個數(shù)據(jù)源控件,分別獲取不同的數(shù)據(jù)源中的數(shù)據(jù)。使用數(shù)據(jù)源控件進行數(shù)據(jù)獲取后,可直接將該數(shù)據(jù)源控件作為新的數(shù)據(jù)源,這樣以來,在進行數(shù)據(jù)綁定時,可不必關心與實體數(shù)據(jù)庫進行交互的細節(jié)問題。本小節(jié)主要以SqlDataSource數(shù)據(jù)源控件為例進行介紹。將SqlDataSource控件與數(shù)據(jù)綁定控件結合使用,不必編寫代碼或只需編寫少量代碼,就可以從SQL數(shù)據(jù)庫中檢索數(shù)據(jù),并將數(shù)據(jù)綁定到數(shù)據(jù)顯示控件。5.5.1 選擇記錄可以將SelectCommand屬性設置為SQL語句或存儲過程,通過該SQL語句或存儲過程來從數(shù)據(jù)庫中進行數(shù)據(jù)記錄的選擇。使用SqlDataSource 數(shù)據(jù)源控件,來訪問SQL Serv

12、er 2005數(shù)據(jù)庫的方法如下。5.5.2 參數(shù)化命令SqlDataSource 控件具有四個命令屬性,可以設置這些屬性以告訴 SqlDataSource 如何獲得、插入、更新和刪除它的數(shù)據(jù)。數(shù)據(jù)源控件可以接受輸入?yún)?shù),可以為其進行參數(shù)聲明,當在運行時將值傳遞給這些參數(shù)。參數(shù)可以用來執(zhí)行以下操作:為數(shù)據(jù)檢索提供搜索條件;提供要在數(shù)據(jù)操作過程中插入、更新或刪除的值;提供用于分頁排序和篩選的值。借助參數(shù),只需要少量代碼,或不使用代碼,就可對數(shù)據(jù)進行更新、刪除等操作??梢詫electCommand屬性設置為SQL語句或存儲過程。同樣,InsertCommand、UpdateCommand和Dele

13、teCommand屬性也用于設置相應的SQL語句或存儲過程,用于告訴SqlDataSource:使用哪些SQL語句來修改根底數(shù)據(jù)庫中的數(shù)據(jù)。如下所示的代碼中,就分別定義了這幾個數(shù)據(jù)操作屬性:5.5 更新數(shù)據(jù)數(shù)據(jù)修改由數(shù)據(jù)源控件執(zhí)行,在無需另外編寫代碼的條件下,即可修改數(shù)據(jù)源的數(shù)據(jù)。這樣以來,數(shù)據(jù)綁定控件無需有關數(shù)據(jù)庫的特定信息即可支持更新操作。5.5.1 使用LinqDataSource更新數(shù)據(jù)使用LinqDataSource更新數(shù)據(jù)時,無需設置數(shù)據(jù)插入、更新和刪除等操作命令,這些命令會自動生成。只需要啟用其插入、更新和刪除操作即可,這可通過將其相關屬性設置為true來實現(xiàn)。代碼就將使用Lin

14、qDataSource控件綁定到GridView中,實現(xiàn)數(shù)據(jù)的編輯和刪除功能: 5.5.2 使用SqlDataSource更新數(shù)據(jù)使用SqlDataSource更新數(shù)據(jù)時,需要為其提供修改數(shù)據(jù)的SQL命令:InsertCommand屬性指定用來向數(shù)據(jù)源中插入記錄的SQL命令,UpdateCommand屬性指定用于更新記錄的命令,而DeleteCommand屬性指定用于從數(shù)據(jù)源中刪除記錄的命令。如下所示的代碼就配置了SqlDataSource的數(shù)據(jù)編輯命令:UpdateCommand=UPDATE Customers SET CompanyName = CompanyName, City = C

15、ity WHERE CustomerID = CustomerID 5.5.3 使用ObjectDataSource控件更新數(shù)據(jù)使用ObjectDataSource控件更新數(shù)據(jù)時,需要指定進行更新操作的的數(shù)據(jù)對象方法:InsertMethod屬性設置了向數(shù)據(jù)源中插入項時所調用的數(shù)據(jù)對象方法,UpdateMethod屬性指定更新數(shù)據(jù)的數(shù)據(jù)對象方法,DeleteMethod屬性指定用于從數(shù)據(jù)源中刪除數(shù)據(jù)的數(shù)據(jù)對象方法。如下所示的代碼,設置了ObjectDataSource控件進行數(shù)據(jù)更新的相關屬性: 5.5.4 更換數(shù)據(jù)源可以將不同的數(shù)據(jù)源控件與頁上的任意控件組合一起使用。另外,還可以更改數(shù)據(jù)綁定

16、控件所使用的數(shù)據(jù)庫或數(shù)據(jù)源,方法是將它的DataSourceID設置為另一個數(shù)據(jù)源控件。如下所示的代碼中,先將GridView1的數(shù)據(jù)源控件設置為SqlDataSource2,然后又將GridView1的數(shù)據(jù)源控件設置為LinqDataSource1:this.GridView1.DataSourceID = SqlDataSource2;this.GridView1.DataSourceID = LinqDataSource1;5.6 小結本章主要介紹了幾種數(shù)據(jù)綁定的方法,包括單個值的綁定和復值綁定。在單值綁定的局部,首先介紹了綁定表達式如何在數(shù)據(jù)綁定控件的模板中運用。同時還對Bind()方法與Eval()方法進行了重點講解。然后使用實例介紹了如何綁定單值字段。在復值綁定局部,介紹了如何將某一字段的值綁定到

溫馨提示

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

評論

0/150

提交評論