2007-05-05
使用 datagrid 控制項
datagrid 控制項是一種類似於電子資料表的繫結控制項,可以顯示一系列行和列來表示 recordset 物件的記錄和字段。可以使用 datagrid 來建立乙個允許終端使用者閱讀和寫入到絕大多數資料庫的應用程式。datagrid 控制項可以在設計時快速進行配置,只需少量**或無需**。當在設計時設定了datagrid 控制項的 datasource 屬性後,就會用資料來源的記錄集來自動填充該控制項,以及自動設定該控制項的列標頭。然後您就可以編輯該網格的列;刪除、重新安排、新增列標頭、或者調整任意一列的寬度。
在執行時,可以在程式中切換 datasource 來察看不同的表,或者可以修改當前資料庫的查詢,以返回乙個不同的記錄集合。
注意 datagrid 控制項與 visual basic 5.0中的 dbgrid 是**相容的,除了乙個例外:datagrid 控制項不支援 dbgrid 的「解除繫結模式」概念。dbgrid 控制項包括在 visual basic 的 tools 目錄中。
可能的用法
檢視和編輯在遠端或本地資料庫中的資料。
與另乙個資料繫結的控制項(諸如 datalist 控制項)聯合使用,使用 datagrid控制項來顯示乙個表的記錄,這個表通過乙個公共字段鏈結到由第二個資料繫結控制項所顯示的表。
使用 datagrid 控制項的設計時特性
可以不編寫任何**,只通過使用 datagrid 控制項的設計時特性來建立乙個資料庫應用程式。下面的說明概要地說明了在實現 datagrid 控制項的典型應用時的一般步驟。完整的循序漸進的指示,請參閱主題「datagrid 方案1: 使用 datagrid 控制項建立乙個簡單資料庫應用程式」。
要在設計時實現乙個 datagrid 控制項
1. 為要訪問的資料庫建立乙個 microsoft 資料鏈結 (.mdl) 檔案。請參閱「建立 northwind ole db 資料鏈結」主題,以獲得乙個示例。
2. 在窗體上放置乙個 ado data 控制項,並將其 connectionstring 屬性設定為在第 1 步中所建立的ole db 資料來源。
3. 在這個 ado data 控制項的 recordsource 屬性中輸入一條將返回乙個記
錄集的 sql 語句。例如,select * from mytablename where custid = 12
4. 在窗體上放置乙個 datagrid 控制項,並將其 datasource 屬性設定為這個 ado data 控制項。
5. 右鍵單擊該 datagrid 控制項,然後單擊「檢索字段」。
6. 右鍵單擊該 datagrid 控制項,然後單擊「編輯」。
7. 重新設定該網格的大小、刪除或新增網格的列。
8. 右鍵單擊該 datagrid 控制項,然後單擊「屬性」。
9. 使用「屬性頁」對話方塊來設定該控制項的適當的屬性,將該網格配置為所需的外觀和行為。
在執行時更改顯示的資料
在建立了乙個使用設計時特性的網格後,也可以在執行時動態地更改該網格的資料來源。下面介紹實現這一功能的通常方法。
更改 datasource 的recordsource
更改所顯示的資料的最通常方法是改變該 datasource 的查詢。例如,如果datagrid 控制項使用乙個ado data控制項作為其 datasource,則重寫recordsource和重新整理該ado data 控制項都將改變所顯示的資料。
' ado data 控制項連線的是 northwind 資料庫的' products 表。新查詢查詢所有
' supplierid = 12 的記錄。
dim strquery as string
strquery = "select * from suppliers where supplierid = 12"
adodc1.recordsource = strquery
adodc1.refresh
更改 datasource
在執行時,可以將 datasource 屬性重新設定為乙個不同的資料來源。例如,您可能具有若干個 ado data 控制項,每個控制項連線不同的資料庫,或設定為不同的 recordsource 屬性。可以簡單地將 datasource 從乙個 ado data控制項重新設定為另乙個 ado data 控制項:
' 將 datasource 重新設定為乙個連線到 pubs 資料庫的、
' 使用 authors 表的 ado data 控制項。
set datagrid1.datasource = adopubsauthors
重新繫結 datasource
當將 datagrid 控制項用於乙個遠端資料庫,諸如 sqlserver 時,可以改變表的結構。例如,可以給這個表新增乙個字段。在這種情形下,可以呼叫rebind 方法根據新的結構來重新建立該網格。注意,如果已經在設計時改變了這個列的布局,datagrid 控制項將會試圖重新建立當前的布局,包括任何空的列。不過,通過首先呼叫 clearfields 方法,可以強制該網格重新設定所有的列。
從 datagrid 返回值
在 datagrid 被連線到乙個資料庫後,可能想要監視使用者單擊了哪乙個單元。可以使用 rowcolchange 事件——而不是 click 事件。如下所示:
private sub datagrid1_rowcolchange(lastrow as variant, byval lastcol as integer)
' 顯示使用者所單擊的單元的文字、行和列的資訊。
debug.print datagrid1.text; datagrid1.row; datagrid1.col
end sub
使用 celltext 和 cellvalue 方法
當乙個列使用 numberformat 屬性設定格式後,celltext 和 cellvalue 屬性是很有用的。numberformat 屬性不必更改實際的資料格式就可以更改任何包含數字的列的格式。例如,給定乙個網格,其中包含乙個名為 productid的、包含整數的列。下面的**將使 datagrid 以"p-0000" 的格式來顯示資料。換句話說,儘管在 productid 欄位中所包含的實際數值為 "3",但該網格所顯示的值將是 "p-0003"。
private sub form_load()
datagrid1.columns("productid").numberformat = "p-0000"
end sub
要返回資料庫中所包含的實際值,應使用 cellvalue 方法,如下所示:
private sub datagrid1_rowcolchange(lastrow as variant, byval lastcol as integer)
debug.print _
datagrid1.columns("productid").cellvalue(datagrid1.bookmark)
end sub
注意 上面所用的 cellvalue 和下面所用的 celltext 值,都需要將bookmark 屬性作為乙個引數,功能才正確。
相反地,如果要返回該字段的格式化的值,應使用 celltext 方法:
private sub datagrid1_rowcolchange(lastrow as variant, byval lastcol as integer)
debug.print _
datagrid1.columns("productid").celltext(datagrid1.bookmark)
end sub
注意 上面的 celltext 方法等價於使用 datagrid 控制項的 text 屬性。
下一步要閱讀關於使用該控制項建立簡單的應用程式的乙個循序漸進的過程,請參閱「使用 datagrid 控制項建立簡單的資料庫應用程式」,或「建立乙個連線datalist 控制項的 datagrid」。
要了解關於 split 物件以及如何對其程式設計的詳細資訊,請參閱「操作datagrid 檢視」。
vb的activeX控制項
vb6做了乙個簡單的activex控制項,還算是簡單,在專案選擇上選activex控制項,就會出現乙個沒有邊框的form,隨便放上乙個label,設定是center 中間對齊 選擇背景黑色,前景紅色,字型24,和vc比起來,vb可以設定字型大小,背景和前景顏色,vc可以設定y方向上的center。v...
EasyUI中datagrid控制項的Editor
datagrid 中的editor 每個editor 支援如下方法 方法 引數 說明 init container,options 初始化editor 並返還目標物件 destroy target 銷毀 editor getvalue target 從 editor text 中讀取值 setval...
DataGrid的列上新增日期控制項
今天的使用easyui datagrid的時候,遇到了如下問題,如下圖 需要datagrid的列上加上可編輯的日期控制項.通過type datebox 設定編輯框為日期控制項,通過 datefmt yyyy 設定日期控制項的格式 這裡只顯示年 實現的 如下 type datebox options ...