所謂資料繫結,就是把資料來源中的資料提取出來,顯示在表單的各種控制項上。使用者可以通過這些控制項查看和修改資料,這些修改會自動儲存到資料來源中。
Windows表單可以利用兩種類型的資料繫結:簡單綁定和複雜綁定。
簡單綁定指將一個控制項綁定到單個資料元素(如資料集表中列的值)的能力。這是用於TextBox或Label等控制項的典型綁定類型。
複雜綁定指將一個控制項綁定到多個資料元素的能力,通常綁定到資料庫的多條記錄。如DataGrid就可以綁定到一個DataTable,一次顯示多條記錄和多個欄位的值。
CurrencyManager cm;
//將DataGrid綁定到DataTable
this.dataGrid1.DataSource = ds.Tables[0];
//擷取資料繫結管理對象
cm = this.BindingContext[ds.Tables[0]];
//將文字框綁定到DataTable中的欄位
this.txtName.DataBindings.Add("Text",ds.Table[0],"Name");
//this.txtName.DataBindings.Add("Text",ds,"table1.Name");
由以上代碼可以看出,給DataGrid設定資料繫結是非常簡單的,只需設定其DataSource屬性即可。而給文字框設定資料繫結,需要向其DataBingdings集合增加一項,其格式為:
"要綁定的屬性名稱",被綁定的DataTable對象,"DataTable中的欄位名"。
ADO.NET資料繫結機制:
像文字框這樣的控制項可以綁定到欄位上,這一事實本身包含以下資訊:
要綁定的自身屬性(如Text屬性)
提供資料來源的對象(如DataTable)
綁定導航字串
這些資訊被封裝起來,形成了Binding類。每個實現了資料繫結的控制項都至少有一個Binding對象,表示它的綁定資訊。
一個表單上可能有多個控制項(比如文字框)綁定到一個資料來源,這就意味著存在多個Bingding對象。因此需要一個類來管理這些對象,這個類就是BindingManagerBase類。但這個類是抽象類別,不能直接建立對象。類CurrencyManager直接繼承自BindingManagerBase類,實現了基類的所有功能,可以直接使用。
一個表單上不僅會有多個控制項綁定到一個資料來源,還可能出現多個控制項綁定到多個資料來源的情況,因此,需要一個類用於管理這些CurrencyManager對象,這就是BindingContext類的功能。每個其上有資料繫結的表單對象都至少會有一個BindingContext對象。
容器控制項(Form,GroupBox和TabControl)可以有自己的BindingContext對象。