使用DataGrid控件
DataGrid控件是一種類似于電子數據表的綁定控件,可以顯示一系列行和列來表示Recordset對象的記錄和字段。可以使用DataGrid來創建一個允許最終用戶閱讀和寫入到絕大多數數據庫的應用程序。DataGrid控件可以在設計時快速進行配置,只需少量代碼或無需代碼。當在設計時設置了DataGrid控件的DataSource屬性后,就會用數據源的記錄集來自動填充該控件,以及自動設置該控件的列標頭。然后您就可以編輯該網格的列;刪除、重新安排、添加列標頭、或者調整任意一列的寬度。
在運行時,可以在程序中切換DataSource來察看不同的表,或者可以修改當前數據庫的查詢,以返回一個不同的記錄集合。
注意DataGrid控件與VisualBasic5.0中的DBGrid是代碼兼容的,除了一個例外:DataGrid控件不支持DBGrid的“解除綁定模式”概念。DBGrid控件包括在VisualBasic的Tools目錄中。
可能的用法
查看和編輯在遠程或本地數據庫中的數據。
與另一個數據綁定的控件(諸如DataList控件)聯合使用,使用DataGrid控件來顯示一個表的記錄,這個表通過一個公共字段鏈接到由第二個數據綁定控件所顯示的表。
使用DataGrid控件的設計時特性
可以不編寫任何代碼,只通過使用DataGrid控件的設計時特性來創建一個數據庫應用程序。下面的說明概要地說明了在實現DataGrid控件的典型應用時的一般步驟。完整的循序漸進的指示,請參閱主題“DataGrid方案1:使用DataGrid控件創建一個簡單數據庫應用程序”。
要在設計時實現一個DataGrid控件
1.為要訪問的數據庫創建一個Microsoft數據鏈接(.MDL)文件。請參閱“創建NorthwindOLEDB數據鏈接”主題,以獲得一個示例。
2.在窗體上放置一個ADOData控件,并將其ConnectionString屬性設置為在第1步中所創建的OLEDB數據源。
3.在這個AdoData控件的RecordSource屬性中輸入一條將返回一個記
錄集的SQL語句。例如,Select*FromMyTableNameWhereCustID=12
4.在窗體上放置一個DataGrid控件,并將其DataSource屬性設置為這個ADOData控件。
5.右鍵單擊該DataGrid控件,然后單擊“檢索字段”。
6.右鍵單擊該DataGrid控件,然后單擊“編輯”。
7.重新設置該網格的大小、刪除或添加網格的列。
8.右鍵單擊該DataGrid控件,然后單擊“屬性”。
9.使用“屬性頁”對話框來設置該控件的適當的屬性,將該網格配置為所需的外觀和行為。
在運行時更改顯示的數據
在創建了一個使用設計時特性的網格后,也可以在運行時動態地更改該網格的數據源。下面介紹實現這一功能的通常方法。
更改DataSource的RecordSource
更改所顯示的數據的最通常方法是改變該DataSource的查詢。例如,如果DataGrid控件使用一個ADOData控件作為其DataSource,則重寫RecordSource和刷新該ADOData控件都將改變所顯示的數據。
'ADOData控件連接的是Northwind數據庫的' Debug.PrintDataGrid1.Text;DataGrid1.Row;DataGrid1.Col
EndSub
使用CellText和CellValue方法
當一個列使用NumberFormat屬性設置格式后,CellText和CellValue屬性是很有用的。NumberFormat屬性不必更改實際的數據格式就可以更改任何包含數字的列的格式。例如,給定一個網格,其中包含一個名為ProductID的、包含整數的列。下面的代碼將使DataGrid以"P-0000"的格式來顯示數據。換句話說,盡管在ProductID字段中所包含的實際數值為"3",但該網格所顯示的值將是"P-0003"。
PrivateSubForm_Load()
DataGrid1.Columns("ProductID").NumberFormat="P-0000"
EndSub
要返回數據庫中所包含的實際值,應使用CellValue方法,如下所示:
PrivateSubDataGrid1_RowColChange(LastRowAsVariant,ByValLastColAsInteger)
Debug.Print_
DataGrid1.Columns("ProductID").CellValue(DataGrid1.Bookmark)
EndSub
注意上面所用的CellValue和下面所用的CellText值,都需要將Bookmark屬性作為一個參數,功能才正確。
相反地,如果要返回該字段的格式化的值,應使用CellText方法:
PrivateSubDataGrid1_RowColChange(LastRowAsVariant,ByValLastColAsInteger)
Debug.Print_
DataGrid1.Columns("ProductID").CellText(DataGrid1.Bookmark)
EndSub
注意上面的CellText方法等價于使用DataGrid控件的Text屬性。
下一步
要閱讀關于使用該控件創建簡單的應用程序的一個循序漸進的過程,請參閱“使用DataGrid控件創建簡單的數據庫應用程序”,或“創建一個連接DataList控件的DataGrid”。
要了解關于Split對象以及如何對其編程的詳細信息,請參閱“操作DataGrid視圖”。
新聞熱點
疑難解答