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

DataGrid控件的使用四

編輯:VB綜合教程

  使用Bookmarks和SelBookmarks跟蹤記錄
  Bookmarks和SelBookmarks提供了標記記錄的一種手段。當編寫應用程序中的特定功能(諸如允許最終用戶手工地選擇多個不相鄰的記錄,進行所選記錄的大批更新)時,這就很有必要。在這些情形中,需要標記哪些記錄已被選擇,因此可以使用SelBookmarks集合及其屬性。
  有兩個函數,分別是CellText和CellValue方法,需要標記才能正確執行。
  
  標記用戶的選擇
  SelBookmarks集合包含所有選定的記錄的書簽。當最終用戶手工選擇記錄時(即在單擊時按住CTRL鍵),每一個選定的記錄的書簽都會加入到該集合中。使用標准的循環,用戶可以知道已經選定了什麼,也可以保存書簽(因為可能需要恢復某個值),以及執行操作:
  DimiasInteger'計數器
  DimintCountAsInteger
  intCount=DataGrid1.SelBookmarks.Count-1
  ReDimarrSelBK(intCount)'聲明用於保存書簽的數組。
  Fori=0TointCount
    ArrSelBK(i)=DataGrid1.SelBookmarks(i)
    '在此處執行操作。如果該操作必須被
    '取消,則退出該循環,然後使用該數
    '組來取消這些更改。
  Nexti
  
  通過在程序中添加到SelBookmarks集合來選擇記錄
  通過將記錄添加到這個集合,也可以在程序中選定記錄。例如,可能有一個顯示指定的客戶所有訂貨的網格。如果要高亮顯示該客戶花費超過$100的所有記錄,則對記錄進行過濾,並將結果書簽添加到SelBookmarks集合。
  DimrsAsRecordset
  Setrs=Adodc1.Recordset
  
  WhileNotrs.EOF
    Ifrs!SupplierID=12Then
    DataGrid1.SelBookmarks.Addrs.Bookmark
    EndIf
    rs.MoveNext
  Wend
  
  顯示計算結果字段
  假設在表中有一個名為"Price"的字段,並且想使用本地稅率來計算表中每一項的稅費。這就是一個計算結果字段,可以通過修改DataSource的查詢來計算這個值,並把這個值返回給DataGrid控件。
  要在DataGrid控件中創建一個計算結果字段
  1.確認在機器上已為Northwind數據庫建立了一個OLEDB數據源;如果還沒有創建這樣的一個數據源,請按照“創建Northwind的OLEDBData連接”的步驟操作。
  2.在窗體上放置一個ADOData控件和一個DataGrid控件。
  3.將ADOData控件的ConnectionString屬性設置為Northwind的數據源。
  4.設置ADOData控件的RecordSource屬性。在“屬性”窗口中,單擊“記錄源”並輸入SelectProductName,UnitPrice,(UnitPrice*.082)AsTaxFromProducts。
  5.將DataGrid控件的DataSource屬性設置為這個ADOData控件。
  6.運行該工程。
  
  與類模塊一起使用DataGrid控件
  如果想要訪問以自定義格式或以ODBC驅動程序不直接支持的格式存放的數據,可以創建一個類來封裝該數據。然後可以編寫該類的自定義函數來檢索這些數據。這樣該類就變成了一種數據源,可以被任何數據使用者(如DataGrid控件)使用。
  在這個類模塊的Initialize事件中,首先通過聲明一個作為New ADODB.Recordset的變量,來創建一個ADODBrecordset對象。在創建了這個recordset對象後,再添加字段,每個數據源中的每個字段都要加入。然後使用合適的數據填充這個記錄集。
  注意也可以使用OLEDB示例提供者來創建一個數據源。關於OLEDB示例提供者的詳細信息,請參閱“創建帶有數據提供方的部件”。
  類模塊有一個GetDataMember事件,只要當數據使用者(諸如DataGrid控件)需要數據時就產生該事件。在這個事件中,Data參數被設置為在Initialize事件中所創建的recordset對象。
  如果要使用這個類模塊,應創建一個具有一個DataGrid控件的窗體。在該窗體的Load事件的代碼中,將該控件的DataSource屬性設置為這個類。
  注意數據類模塊在設計時是不可用的。例如,如果使用DataGrid控件,則當用戶在“屬性”窗口中單擊“數據源”時,所有可用的數據源都會出現在一個下拉列表中。但其中不會有這個數據類模塊,它只能在代碼中設置。
  
  使用類模塊創建一個數據源
  下面的示例使用一個類模塊來創建一個簡單數據源。然後通過DataSource屬性將DataGrid控件綁定到該模塊。
  要創建一個用於DataGrid的類
  1.創建一個新的標准Exe工程。
  2.給窗體添加一個DataGrid控件。如果DataGrid控件不在“工具箱”中,則在“工程”菜單中單擊“部件”,
  再單擊“MicrosoftDataGridControl”,然後單擊“確定”。
  3.在“工程”菜單中,單擊“引用”。在“引用”對話框中,單擊“MicrosoftActiveXDataObjects2.0Library”。
  4.在“工程”菜單中,單擊“添加類模塊”來給工程添加一個數據類模塊。
  5.在“工程資源管理器”窗口中,單擊並選定“類”圖標,並按F4鍵顯示“屬性”窗口。
  6.在“屬性”窗口中,將類的名稱更改為NamesData。
  7.在“屬性”窗口中,單擊“DataSourceBehavior”並將該屬性更改為vbDataSource。
  8.在該類模塊的Declarations部分,創建一個ADODBRecordset變量,如下所示:
  OptionExplicit
  PrivateWithEventsrsNamesAsADODB.RecordSet
  使用WithEvents關鍵詞來聲明該變量,使用戶可以對RecordSet對象的事件編程。
  9.在該類的Initialize事件中,添加下述代碼:
  PrivateSubClass_Initialize()
    '將新的數據成員的名稱添加到DataMember集合
    '這使其它對象可以看見這些可用的
    DataMembersDataMembers.Add"Names"
  
    SetrsNames=NewADODB.RecordSet   '設置對象變量。
    '創建一個具有兩個字段的recordset,並打開該recordset。
    '第一個記錄具有一個整數的數據類型,第二個記錄是一個最大可
    '達256個字符的字符串。CursorType被設置為OpenStatic
    '——一個可更新的對一組記錄的快照。LockType被設置為
    'LockOptimistic,以允許對該recordset進行更新。
    WithrsNames
    .Fields.Append"ID",adInteger
    .Fields.Append"Name",adBSTR,255
    .CursorType=adOpenStatic
    .LockType=adLockOptimistic
    .Open
    EndWith
  
    DimiAsInteger
    Fori=1to10  '添加十條記錄。
    rsNames.AddNew
    rsNames!ID=i
    rsNames!Name="Name"&i
    rsNames.Update
    Nexti
    rsNames.MoveFirst'移到該記錄集的開始。
  EndSub
  這部分代碼首先創建recordset對象,然後給該對象添加兩個字段。代碼接著給recordset添加十條記錄。
  10.在該類的GetDataMember事件中,添加下述代碼:
  PrivateSubClass_GetDataMember(ByValDataMemberAsString,_
  DataAsObject)
     SetData=rsNames
  EndSub
  只要發生該事件——即當該類對象被綁定到一個數據使用者,如DataGrid控件時,代碼將返回該recordset對象。
  11.在Form對象的代碼模塊中,聲明一個數據類的對象變量:
  OptionExplicit
  PrivatedatNamesAsNamesData'類變量
  12.在Form對象的Load事件的代碼中,將DataGrid控件的DataSource設置為該類對象。
   PrivateSubForm_Load()
     '創建一個新的NamesData對象
     SetdatNames=NewNamesData
     '將這個DataGrid綁定到新的數據源datNames
     SetDataGrid1.DataSource=datNames
   EndSub
  13.按F5鍵運行該工程。
  

->

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