教你在Visual Basic中操作DataGrid视图


  一个“拆分”的网格使最终消费者对 雷同的数据 可以 占有多个视图 。例如, 假如有一个由十个字段构成的大表 。在这种状况下,在控件中 视察的记录集将有十列宽,除非窗体十分宽,不然消费者将 无奈同时看见全部列的内容 。更进一步, 假如消费者只对第一列和最终一列有兴趣(例如,第一列是名字,最终一列是电话号码) 。为了能同时看到在两端的列(不再一次 调度列的顺序), 可以对网格进行拆分 。  

   缔造一个Split对象

  在设计时, 可以 缔造一个拆分,具体步骤是:右键单击网格,单击“编辑”,再单击右键, 而后单击“拆分” 。通过右键单击该控件,并单击“属性”来显示“属性页”对话框, 可以编辑这个拆分 。 可以 使用“拆分”选项卡来自定义拆分 。要删除一个拆分,右键单击该拆分,并单击“删除” 。

  在运行时,最终消费者也 可以通过单击位于这个网格控件的左下边的右边的选项卡,以手工 模式来拆分该网格(除非不同意这个操作),如下图所示:  

  默许状况下,DataGrid控件包括一个Split对象 。 预防最终消费者增加拆分的代码为:  

  DataGrid1.Splits(0).AllowSizing=False  

  在程序中增加和删除拆分

  DataGrid控件包括一个Split对象的 集中 。要在程序中增加拆分, 可以 使用Add 步骤,如下所示:

  DataGrid1.Splits.Add1  

   留神Add 步骤需求新的拆分索引作为其参数 。要增加一个拆分,应将这个索引参数设置为Splits 集中的Count属性值 。  

   使用Split 集中的Add 步骤, 可以在程序中依照所实际需求增加拆分 。因为增加多于两个以上的拆分将使网格很难 使用, 可以 使用该 集中的Count属性来 制约拆分的数目 。 

  IfDataGrid1.Splits.Count<3Then'增加一个拆分 。

  DataGrid1.Splits.AddDataGrid1.Splits.Count

  EndIf  

  使拆分同步

  当拆分多于一个时,可能 盼望操纵这些拆分如何滚动 。例如,在一个 存在三个拆分的网格中, 可以决定只让第一个和第三个拆分同步,而让之间的拆分独立地滚动 。要同步任何两个(或多个)拆分, 惟独将每个Split对象的ScrollGroup属性设置为同一个值 。  

  '使第一个和第三个Split对象同步 。

  WithDataGrid1

  .Splits(0).ScrollGroup=1

  .Splits(1).ScrollGroup=2

  .Splits(2).ScrollGroup=1

  EndWith  

  通过设置Scrollbars属性,使同步的拆分组只显示一个滚卷条,从而进一步自定义拆分的外观 。 

  操纵Tab键和箭头键的行为

   使用WrapCellPointer、TabAcrossSplits、以及TabAction属性, 可以决定当最终消费者按下tab键或箭头键时网格的行为 。

    

  在这三个属性中,TabAction属性级别最高,它决定WrapCellPointer和TabAcrossSplits这两个属性是不是能生效 。TabAction有三个设置值:ControlNavigation、ColumnNavigation和GridNavigation 。当该属性设置为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属性

  '进行测试 。假如测试失败,则 潜藏这一列 。

  DimiAsInteger  

  ' 潜藏除ProductName列之外的全部列 。

  Fori=0ToDataGrid1.Splits(0).Columns.Count-1

  IfDataGrid1.Splits(0).Columns(i).DataField<>"ProductName"Then

  DataGrid1.Splits(0).Columns(i).Visible=False

  EndIf

  Nexti  

  ' 潜藏除UnitPrice列之外的全部列 。

  Fori=0ToDataGrid1.Splits(0).Columns.Count-1

  IfDataGrid1.Splits(1).Columns(i).DataField<>"UnitPrice"Then

  DataGrid1.Splits(1).Columns(i).Visible=False

  EndIf

  NextI