DataGrid列在null时更改

时间:2013-03-28 20:14:29

标签: vb.net datagrid datatable infragistics ultragrid

我正在使用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  |
----------------------------

是否有一些我缺少的属性允许我的表调整为非空列?

1 个答案:

答案 0 :(得分:2)

当您将DataSource属性设置为DataTable时,您将通过Designer将架构信息集替换为已分配表的架构信息。
据我所知,没有办法保留那个缺失的列。

但是,您可以使用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