我使用的是Infragistics UltraGrid
,它的作用就像一个普通的datagrid
。
我的网格是这样的:
-------------------------
| Red | Blue | Green |
-------------------------
| null | null | null |
-------------------------
我正在构建一个DataTable
,将其分配为我的网格的DataSource
。我的DataTable
有
- 红色5项
- 2件蓝色物品
当我像这样分配数据源时:
myGrid.DataSource = myDataTable
或者像这样myGrid.SetDataBinding(myTable, Nothing, True)
我得到这个网格:
------------------
| Red | Blue |
------------------
| 5 | 2 |
------------------
当我应该写这个的时候:
---------------------------
| Red | Blue | Green |
---------------------------
| 5 | 2 | null |
----------------------------
是否有一些属性我错过了,允许我的表调整到非空列?
当您将DataSource属性设置为DataTable时,您将使用指定表的模式信息替换通过设计器设置的模式信息。
据我所知,没有办法保留那个缺失的列。
但是,您可以使用InitializeLayout事件将缺失的列重新添加到网格中
Private Sub myGrid_InitializeLayout(sender As object, _
e As Infragistics.Win.UltraWinGrid.InitializeLayoutEventArgs)
Dim b As UltraGridBand = e.Layout.Bands[0];
if Not b.Columns.Exists("RED") Then
Dim colRed As UltraGridColumn = b.Columns.Add("RED", "RED");
colRed.NullText = "Null"
colRed.Header.VisiblePosition = 0
End if
if Not b.Columns.Exists("BLU") Then
Dim colBlu As UltraGridColumn = b.Columns.Add("BLU", "BLU");
colBlu.NullText = "Null"
colBlu.Header.VisiblePosition = 1
End if
if Not b.Columns.Exists("GREEN") Then
Dim colGreen As UltraGridColumn = b.Columns.Add("GREEN", "GREEN");
colGreen.NullText = "Null"
colGreen.Header.VisiblePosition = 2
End if
End Sub