DataGrid控件的使用三

上一篇 / 下一篇  2007-03-06 11:35:24 / 个人分类:vb

51Testing软件测试网|0Y/e9JW3cp

    使用列51Testing软件测试网 U9d W q|/_\ {_
    通过更改 DataSource 属性,可以动态地更改在 DataGrid 控件中显示的数据。例如,可以显示同一个数据库的不同表。如果这样做,则 DataGrid 控件将只根据默认的属性显示数据。
9pC\9~a5zr)|\.w051Testing软件测试网p$Ck5t:Pzu
    添加、删除或隐藏列
|/W s(m| XC*W0    通过使用 Columns 集合和 Column 对象的属性和方法,可以在程序中添加、删除或隐藏列。
8qK.p&Hj1A:\N051Testing软件测试网4_4xO kS F8S+c,C
    添加和删除一列51Testing软件测试网6{ |(?7\jr*_{$\'Q5r
    要在运行时添加一列,可以使用 Add 方法。如果首先声明一个变量,并将新对象赋给该变量,就可以用简明的代码设置各种属性。51Testing软件测试网cc&BB oq7^y2lG
    Private Sub AddColumn()51Testing软件测试网h7d `.O em
      '' 在最右边的位置添加一列。然后设置其 Visible、Width、51Testing软件测试网iQ#gj^5]uw
      '' Caption以及 Alignment 属性。DataField 属性则指定
8R$C#td'cD0      '' 该列将绑定到哪一个字段。51Testing软件测试网;m h C[1{Q c7aX+B L
      Dim c As Column
:{'b-H,Crd H[7X0      Set c = DataGrid1.Columns.Add(DataGrid1.Columns.Count)
8I~ iS a3lH6K0      With c51Testing软件测试网.n SO pW*{(RFL\E
       .Visible = True51Testing软件测试网6PF;Iwui_fL
       .Width = 100051Testing软件测试网mEi9T1`k![U
       .Caption = "我的新列"
"B|0nBk*UE0       .DataField = Adodc1.Recordset.Fields("ProductName").Name51Testing软件测试网 fy9ua3r FRf
       .Alignment = dbgRight51Testing软件测试网7G!Y/YOga!Ze(z
      End With
J z-}eFpe3lq&~0    End Sub
Q1qnn2y0|#a$ew o0    可以使用方法来删除任意一列。请确保使用 ColIndex 参数来指定要删除的列。下面的代码将删除被单击的列。
Z#fy;oIq^0    Private Sub DataGrid1_HeadClick(ByVal ColIndex As Integer)
+xEg ?dcZh0       DataGrid1.Columns.Remove ColIndex51Testing软件测试网i0[ Q2Qv
    End Sub
Al })q/Yx^0
;R{ ^X(VU rd.vn0    隐藏一列51Testing软件测试网eT a|@? d'Ewh-F
    通过将 Visible 属性设置为 False,可以隐藏任意一列。当想要限制用户可以查看或编辑的列时这一功能特别有用。下面的示例在 Columns 集合中循环,隐藏除少数列之外的所有列。
6XJ(s#]+E E0    Private Sub HideColumns()
Z{&L~d]OR0      '' 使用 DataField 属性来判别正在测试的是哪一列。51Testing软件测试网$Pp3X8fKo4j
      '' 只显示三列:ProductName、UnitPrice以及51Testing软件测试网{sQY@{
      '' UnitsInStock。
zv `1o4c.f!nS0      Dim c As Column
m eUA$g ygD'A0      For Each c In DataGrid1.Columns
-oqh~\,r$m0         Select Case c.DataField
A;HA J*h2Uw3H&h0         Case "ProductName"
/S^6n)Bx$G ~%U|C0           c.Visible = True51Testing软件测试网?3j;h g'x%z#?4x
         Case "UnitPrice"51Testing软件测试网}!eLix9O
           c.Visible = True51Testing软件测试网 f$Jy.p\[ C
         Case "UnitsInStock"51Testing软件测试网1C`-R i6dBF
           c.Visible = True
*?5Qs9Z2OC,j0LX7u0           c.Caption = "In Stock"    '' 更改这个列的标头。51Testing软件测试网 Gf1Hu8d9L2] t)Z
         Case Else             '' 隐藏其它所有的列。51Testing软件测试网o7zN ?5R4^s2]5^
           c.Visible = False
7Z,ME'VM1C b0         End Select
'uy];R/@ r[P0      Next c
-_*I@VM @w0    End Sub
2^:x+_*g1}051Testing软件测试网k UwL&}L7j6vYq
    操作 DataGrid 视图
;\#C&Jo$M(m;Q0    一个“拆分”的网格使最终用户对相同的数据可以拥有多个视图。例如,假设有一个由十个字段组成的大表。在这种情况下,在控件中察看的记录集将有十列宽,除非窗体非常宽,否则用户将无法同时看见所有列的内容。,而且,假设用户只对第一列和最后一列感兴趣(例如,第一列是名字,最后一列是电话号码)。为了能同时看到在两端的列(不重新安排列的顺序),可以对网格进行拆分。51Testing软件测试网"}]K)io+N

4Ps,a y.z+@$O0s @A0    创建一个 Split 对象51Testing软件测试网?mK"U"Y,\0Y
    在设计时,可以创建一个拆分,具体步骤是:右键单击网格,单击“编辑”,再单击右键,然后单击“拆分”。通过右键单击该控件,并单击“属性”来显示“属性页”对话框,可以编辑这个拆分。可以使用“拆分”选项卡来自定义拆分。要删除一个拆分,右键单击该拆分,并单击“删除”。51Testing软件测试网.nNinT
    在运行时,最终用户也可以通过单击位于这个网格控件的左下边的右边的选项卡,以手工方式来拆分该网格(除非不允许这个操作),如下图所示:
F|r.g/Z051Testing软件测试网4g?5BtAU'U A7K
默认情况下,DataGrid 控件包含一个 Split 对象。防止最终用户添加拆分的代码为:
&U]1^Q.p&M)W0    DataGrid1.Splits(0).AllowSizing = False
l;_2D x!{:g0`*lc051Testing软件测试网V'um:] ^4{3q
    在程序中添加和删除拆分51Testing软件测试网b"AQ};m!DP N
    DataGrid 控件包含一个 Split 对象的集合。要在程序中添加拆分,可以使用 Add 方法,如下所示:51Testing软件测试网+\&{/tV-d:\P;_S
    DataGrid1.Splits.Add 1
/GD)eo7H:OJ5}0    注意 Add 方法需要新的拆分索引作为其参数。要添加一个拆分,应将这个索引参数设置为 Splits 集合的 Count 属性值。
(T:C#T:~QM h0    使用 Split 集合的 Add 方法,可以在程序中按照实际需要添加拆分。由于添加多于两个以上的拆分将使网格很难使用,可以使用该集合的 Count 属性来限制拆分的数目。51Testing软件测试网M5ZTED.a/\m
    If DataGrid1.Splits.Count < 3 Then '' 添加一个拆分。51Testing软件测试网C^v |R$Z i7n`f$@
       DataGrid1.Splits.Add DataGrid1.Splits.Count51Testing软件测试网"jSl2^`0^ O X
    End If51Testing软件测试网s6glHn7\-H5TV&hS c
51Testing软件测试网z;v:CuGwV
    使拆分同步51Testing软件测试网%q0{_c@
    当拆分多于一个时,可能希望控制这些拆分如何滚动。例如,在一个具有三个拆分的网格中,可以决定只让第一个和第三个拆分同步,而让中间的拆分独立地滚动。要同步任何两个(或多个)拆分,只需将每个 Split 对象的 ScrollGroup 属性设置为同一个值。
@h#h7\6m0s;Y1@0    '' 使第一个和第三个 Split 对象同步。
6_A [5KT0    With DataGrid151Testing软件测试网2r"^u*i~S
      .Splits(0)51Testing软件测试网2v"TKM[
    .ScrollGroup = 1
jcw{8l0    .Splits(1).ScrollGroup = 251Testing软件测试网!|3_ vAp'B
    .Splits(2).ScrollGroup = 1
s|!RxPw2TH0    End With
:sR*E4c7e0    通过设置 Scrollbars 属性,使同步的拆分组只显示一个滚卷条,从而进一步自定义拆分的外观。51Testing软件测试网W#U3~4x3` m
51Testing软件测试网vtV)rS b
    控制 Tab 键和箭头键的行为
:| v-F)zq&iJQc h2M0    使用 WrapCellPointer、TabAcrossSplits以及 TabAction 属性,可以决定当最终用户按下 tab 键或箭头键时网格的行为。51Testing软件测试网ePi z0eQ@
    在这三个属性中,TabAction 属性级别最高,它决定 WrapCellPointer 和TabAcrossSplits 这两个属性是否能生效。TabAction 有三个设置值: ControlNavigation、Column Navigation 和 Grid Navigation。当该属性设置为 ControlNavigation 时,按 Tab 键根据 TabIndex 将焦点切换到下一个控件。这一设置优先于 WrapCellPointer 和 TabAcrossSplits。51Testing软件测试网EI l5jm?3k-f
    WrapCellPointer 属性决定在任何单个的拆分中 tab 键和箭头键的行为。如果该属性设置为 True,且当前单元位于最后一列,这时最终用户按 tab 键则使第一列的下一行变成当前的单元。不过,如果当前单元位于最后一行的最后一列时,这时就没有地方可以“换行”。
:rn.n6d,Ocv0    TabAcrossSplits 属性决定当网格中存在两个或多个拆分时 tab 和箭头键的行为。如果该属性设置为 True,且当前单元位于任何一个拆分的最后一列,则按Tab或箭头键将使当前单元“跳” 到下一个拆分的第一列。当前单元仍保持相同的行位置。51Testing软件测试网%Y,X1fME0Gz
    注意 如果 WrapCellPointer 和 TabAcrossSplits 属性都设置为 True,则只有当前单元位于最后一个拆分的最后一列时才会换行。这时当前单元将换到第一个拆分的第一列中的下一行。
HL9V Q}(L051Testing软件测试网K8n,v4n/|!}1B
    自定义列集合
@_ a1B+^{t^0    每一个 Split 对象都有一个 Columns 属性,允许用户来操作一个 Column对象的集合。通过这样做,可以更改每个 Split 对象的外观。例如,可以用一个拆分包含显示姓氏字段和名字字段的两个列,而第二个拆分则显示电话字段和地址字段。要实现这一目标,需要将其它的每一列的 Visible 属性设置为 False,如下所示:
x7Ubm1l#c9QdK0    '' 枚举 Columns 集合,对每一个 Column 对象的 DataField 属性
:{,a.{C VN#[#Ud0[0    '' 进行测试。如果测试失败,则隐藏这一列。51Testing软件测试网0c'iX|I&G
    Dim i As Integer51Testing软件测试网*H4Ix7K2|7u \fo

%I#ES@ao+n0    '' 隐藏除 ProductName 列之外的所有列。
)@ Ag2c{ \0    For i = 0 To DataGrid1.Splits(0).Columns.Count - 1
[t_5@Ks0      If DataGrid1.Splits(0).Columns(i).DataField <> "ProductName" Then
D)C'`(}}?NS1O0         DataGrid1.Splits(0).Columns(i).Visible = False
(M;g3bS N$yx0      End If
8j9o x!N v8V0    Next i
~*}1t+}NV051Testing软件测试网 gxHo0sU0R'l%eX
    '' 隐藏除 UnitPrice 列之外的所有列。
T:]4\,DZ7cw2t1t Rs2v0    For i = 0 To DataGrid1.Splits(0).Columns.Count - 151Testing软件测试网(cbV&D ?-RR
      If DataGrid1.Splits(1).Columns(i).DataField <> "UnitPrice" Then
Y1|.i|g0         DataGrid1.Splits(1).Columns(i).Visible = False51Testing软件测试网DL3T#vIe
      End If
k+~)o#v7mV%@HD0    Next I51Testing软件测试网3kBZo+_0Yt

dG_9] WWJBa[0

TAG: vb

 

评分:0

我来说两句

Open Toolbar