二.如何浏覽數據:
在《Visual C#的數據綁定》中,已經了解了如何把數據集中的某些字段綁定到WinForm組件的某個屬性上,這樣程序員就可以根據以WinForm組件的來定制數據顯示的形式,並且此時的WinForm組件顯示內容就可以隨著記錄指針的變化而改變。至此可見,浏覽數據記錄的關鍵就是如何改變記錄指針。要實現這種操作,就要使用到BindingManagerBase類,此類的主要作用是管理對於那些實現了對同一個數據源進行綁定的對象。說的具體些,就是能夠使得Windows窗體上的已經對同一數據源進行數據綁定的組件保持同步。在BindingManagerBase類中定義了一個屬性"Position",通過這個屬性就可以改變BindingManagerBase對象中的數據指針。創建BindingManagerBase對象必須要使用到BindingContext類,其實每一個由Control類中繼承而得到的對象,都有單一的BindingContext對象,在大多數創建窗體中實現數據綁定組件的BindingManagerBase對象是使用Form類的BindingContext來得到。下列代碼是以Access 2000數據庫為模型,創建的一個名稱為"myBind"的BindingManagerBase對象。
以下是引用片段:
//創建一個 OleDbConnection
string strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = db.mdb" ;
OleDbConnection myConn = new OleDbConnection ( strCon ) ;
string strCom = " SELECT * FROM person " ;
file://創建一個 DataSet
myDataSet = new DataSet ( ) ;
myConn.Open ( ) ;
file://用 OleDbDataAdapter 得到一個數據集
OleDbDataAdapter myCommand = new OleDbDataAdapter ( strCom , myConn ) ;
file://把Dataset綁定books數據表
myCommand.Fill ( myDataSet , "person" ) ;
file://關閉此OleDbConnection
myConn.Close ( ) ;
myBind = this.BindingContext [ myDataSet , "person" ] ;
下列代碼是以SQL Server 2000數據庫為模型,創建一個名稱為"myBind"的BindingManagerBase對象。
以下是引用片段:
// 設定數據連接字符串,此字符串的意思是打開SQL Server數據庫,服務器名稱為server1,數據庫為data1
string strCon = "Provider = SQLOLEDB.1 ; Persist Security Info = False ; User ID = sa ; Initial Catalog = data1 ; Data Source = server1 " ;
OleDbConnection myConn = new OleDbConnection ( strCon ) ;
myConn.Open ( ) ;
string strCom = " SELECT * FROM person " ;
file://創建一個 DataSet
myDataSet = new DataSet ( ) ;
file://用 OleDbDataAdapter 得到一個數據集
OleDbDataAdapter myCommand = new OleDbDataAdapter ( strCom , myConn ) ;
file://把Dataset綁定person數據表
myCommand.Fill ( myDataSet , " person " ) ;
file://關閉此OleDbConnection
myConn.Close ( ) ;
myBind = this.BindingContext [ myDataSet , "person" ] ;
得到了是同一數據源的BindingManagerBase對象,通過改變此對象的"Position"屬性值,這樣綁定數據的組件顯示的數據就隨之變化,從而實現導航數據記錄。
< I > .導航按鈕"上一條"實現方法:
以下是引用片段:
protected void GoPrevious ( object sender , System.EventArgs e )
{
if ( myBind.Position == 0 )
MessageBox.Show ( "已經到了第一條記錄!" , "信息提示!" , MessageBoxButtons.OK , MessageBoxIcon.Information ) ;
else
myBind.Position -= 1 ;
}
< II > . 導航按鈕"下一條"實現方法:
以下是引用片段:
protected void GoNext ( object sender , System.EventArgs e )
{
if ( myBind.Position == myBind.Count -1 )
MessageBox.Show ( "已經到了最後一條記錄!", "信息提示!" , MessageBoxButtons.OK , MessageBoxIcon.Information ) ;
else
myBind.Position += 1 ;
}
< III > . 導航按鈕"至尾"實現方法:
以下是引用片段:
protected void GoLast ( object sender , System.EventArgs e )
{
myBind.Position = myBind.Count - 1 ;
}
< IV > . 導航按鈕"至首"實現方法:
以下是引用片段:
protected void GoFirst ( object sender , System.EventArgs e )
{
myBind.Position = 0 ;
}
注釋:"Count"是BindingManagerBase對象的另外一個重要的屬性,是數據集記錄的總數。