数据网格列更改时为空



我使用的是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

最新更新