0

我正在使用Infragistics UltraGridwhich 就像一个普通的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  |
----------------------------

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

4

1 回答 1

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
于 2013-03-28T20:52:51.317 回答