程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> Visual Basic語言 >> VB綜合教程 >> DataGrid控件的使用

DataGrid控件的使用

編輯:VB綜合教程

使用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數據庫的'Products表。新查詢查找所有
  'SupplierID=12的記錄。
  DimstrQueryAsString
  strQuery="SELECT*FROMSuppliersWHERESupplierID=12"
  Adodc1.RecordSource=strQuery
  Adodc1.Refresh
  
  更改DataSource
  在運行時,可以將DataSource屬性重新設置為一個不同的數據源。例如,您可能具有若干個ADOData控件,每個控件連接不同的數據庫,或設置為不同的RecordSource屬性。可以簡單地將DataSource從一個ADOData控件重新設置為另一個ADOData控件:
  '將DataSource重新設置為一個連接到Pubs數據庫的、
  '使用Authors表的ADOData控件。
  SetDataGrid1.DataSource=adoPubsAuthors
  
  重新綁定DataSource
  當將DataGrid控件用於一個遠程數據庫,諸如SQLServer時,可以改變表的結構。例如,可以給這個表添加一個字段。在這種情形下,可以調用Rebind方法根據新的結構來重新創建該網格。注意,如果已經在設計時改變了這個列的布局,DataGrid控件將會試圖重新創建當前的布局,包括任何空的列。不過,通過首先調用ClearFields方法,可以強制該網格重新設置所有的列。
  
  從DataGrid返回值
  在DataGrid被連接到一個數據庫後,可能想要監視用戶單擊了哪一個單元。可以使用RowColChange事件——而不是Click事件。如下所示:
  PrivateSubDataGrid1_RowColChange(LastRowAsVariant,ByValLastColAsInteger)
     '顯示用戶所單擊的單元的文字、行和列的信息。
     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視圖”。
  

->

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved