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

vb的datagrid控件的使用(三)

編輯:VB6

使用列
通過更改 DataSource 屬性,可以動態地更改在 DataGrid 控件中顯示的數據。例如,可以顯示同一個數據庫的不同表。如果這樣做,則 DataGrid 控件將只根據默認的屬性顯示數據。

添加、刪除或隱藏列
通過使用 Columns 集合和 Column 對象的屬性和方法,可以在程序中添加、刪除或隱藏列。

添加和刪除一列
要在運行時添加一列,可以使用 Add 方法。如果首先聲明一個變量,並將新對象賦給該變量,就可以用簡明的代碼設置各種屬性。
Private Sub AddColumn()
' 在最右邊的位置添加一列。然後設置其 Visible、Width、
' Caption以及 Alignment 屬性。DataField 屬性則指定
' 該列將綁定到哪一個字段。
Dim c As Column
Set c = DataGrid1.Columns.Add(DataGrid1.Columns.Count)
With c
.Visible = True
.Width = 1000
.Caption = "我的新列"
.DataField = Adodc1.Recordset.Fields("ProductName").Name
.Alignment = dbgRight
End With
End Sub
可以使用方法來刪除任意一列。請確保使用 ColIndex 參數來指定要刪除的列。下面的代碼將刪除被單擊的列。
Private Sub DataGrid1_HeadClick(ByVal ColIndex As Integer)
DataGrid1.Columns.Remove ColIndex
End Sub

隱藏一列
通過將 Visible 屬性設置為 False,可以隱藏任意一列。當想要限制用戶可以查看或編輯的列時這一功能特別有用。下面的示例在 Columns 集合中循環,隱藏除少數列之外的所有列。
Private Sub HideColumns()
' 使用 DataField 屬性來判別正在測試的是哪一列。
' 只顯示三列:ProductName、UnitPrice以及
' UnitsInStock。
Dim c As Column
For Each c In DataGrid1.Columns
Select Case c.DataField
Case "ProductName"
c.Visible = True
Case "UnitPrice"
c.Visible = True
Case "UnitsInStock"
c.Visible = True
c.Caption = "In Stock" ' 更改這個列的標頭。
Case Else ' 隱藏其它所有的列。
c.Visible = False
End Select
Next c
End Sub

操作 DataGrid 視圖
一個“拆分”的網格使最終用戶對相同的數據可以擁有多個視圖。例如,假設有一個由十個字段組成的大表。在這種情況下,在控件中察看的記錄集將有十列寬,除非窗體非常寬,否則用戶將無法同時看見所有列的內容。,而且,假設用戶只對第一列和最後一列感興趣(例如,第一列是名字,最後一列是電話號碼)。為了能同時看到在兩端的列(不重新安排列的順序),可以對網格進行拆分。

創建一個 Split 對象
在設計時,可以創建一個拆分,具體步驟是:右鍵單擊網格,單擊“編輯”,再單擊右鍵,然後單擊“拆分”。通過右鍵單擊該控件,並單擊“屬性”來顯示“屬性頁”對話框,可以編輯這個拆分。可以使用“拆分”選項卡來自定義拆分。要刪除一個拆分,右鍵單擊該拆分,並單擊“刪除”。
在運行時,最終用戶也可以通過單擊位於這個網格控件的左下邊的右邊的選項卡,以手工方式來拆分該網格(除非不允許這個操作),如下圖所示:

默認情況下,DataGrid 控件包含一個 Split 對象。防止最終用戶添加拆分的代碼為:
DataGrid1.Splits(0).AllowSizing = False

在程序中添加和刪除拆分
DataGrid 控件包含一個 Split 對象的集合。要在程序中添加拆分,可以使用 Add 方法,如下所示:
DataGrid1.Splits.Add 1
注意 Add 方法需要新的拆分索引作為其參數。要添加一個拆分,應將這個索引參數設置為 Splits 集合的 Count 屬性值。
使用 Split 集合的 Add 方法,可以在程序中按照實際需要添加拆分。由於添加多於兩個以上的拆分將使網格很難使用,可以使用該集合的 Count 屬性來限制拆分的數目。
If DataGrid1.Splits.Count < 3 Then ' 添加一個拆分。
DataGrid1.Splits.Add DataGrid1.Splits.Count
End If

使拆分同步
當拆分多於一個時,可能希望控制這些拆分如何滾動。例如,在一個具有三個拆分的網格中,可以決定只讓第一個和第三個拆分同步,而讓中間的拆分獨立地滾動。要同步任何兩個(或多個)拆分,只需將每個 Split 對象的 ScrollGroup 屬性設置為同一個值。
' 使第一個和第三個 Split 對象同步。
With DataGrid1
.Splits(0)
.ScrollGroup = 1
.Splits(1).ScrollGroup = 2
.Splits(2).ScrollGroup = 1
End With
通過設置 Scrollbars 屬性,使同步的拆分組只顯示一個滾卷條,從而進一步自定義拆分的外觀。

控制 Tab 鍵和箭頭鍵的行為
使用 WrapCellPointer、TabAcrossSplits以及 TabAction 屬性,可以決定當最終用戶按下 tab 鍵或箭頭鍵時網格的行為。
在這三個屬性中,TabAction 屬性級別最高,它決定 WrapCellPointer 和TabAcrossSplits 這兩個屬性是否能生效。TabAction 有三個設置值: ControlNavigation、Column Navigation 和 Grid Navigation。當該屬性設置為 ControlNavigation 時,按 Tab 鍵根據 TabIndex 將焦點切換到下一個控件。這一設置優先於 WrapCellPointer 和 TabAcrossSplits。
WrapCellPointer 屬性決定在任何單個的拆分中 tab 鍵和箭頭鍵的行為。如果該屬性設置為 True,且當前單元位於最後一列,這時最終用戶按 tab 鍵則使第一列的下一行變成當前的單元。不過,如果當前單元位於最後一行的最後一列時,這時就沒有地方可以“換行”。
TabAcrossSplits 屬性決定當網格中存在兩個或多個拆分時 tab 和箭頭鍵的行為。如果該屬性設置為 True,且當前單元位於任何一個拆分的最後一列,則按Tab或箭頭鍵將使當前單元“跳” 到下一個拆分的第一列。當前單元仍保持相同的行位置。
注意 如果 WrapCellPointer 和 TabAcrossSplits 屬性都設置為 True,則只有當前單元位於最後一個拆分的最後一列時才會換行。這時當前單元將換到第一個拆分的第一列中的下一行。

自定義列集合
每一個 Split 對象都有一個 Columns 屬性,允許用戶來操作一個 Column對象的集合。通過這樣做,可以更改每個 Split 對象的外觀。例如,可以用一個拆分包含顯示姓氏字段和名字字段的兩個列,而第二個拆分則顯示電話字段和地址字段。要實現這一目標,需要將其它的每一列的 Visible 屬性設置為 False,如下所示:
' 枚舉 Columns 集合,對每一個 Column 對象的 DataField 屬性
' 進行測試。如果測試失敗,則隱藏這一列。
Dim i As Integer

' 隱藏除 ProductName 列之外的所有列。
For i = 0 To DataGrid1.Splits(0).Columns.Count - 1
If DataGrid1.Splits(0).Columns(i).DataField <> "ProductName" Then
DataGrid1.Splits(0).Columns(i).Visible = False
End If
Next i

' 隱藏除 UnitPrice 列之外的所有列。
For i = 0 To DataGrid1.Splits(0).Columns.Count - 1
If DataGrid1.Splits(1).Columns(i).DataField <> "UnitPrice" Then
DataGrid1.Splits(1).Columns(i).Visible = False
End If
Next I

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