为什么加载序列化 DisplayLayout 后我的 UltraGridRow ListObject 为空

Why is my UltraGridRow ListObject null after loading a serialized DisplayLayout

我在我的 WinForms 应用程序中使用 Infragistics UltraGrid。基础设施 v13.1.

我最近添加了代码,以二进制序列化格式保存网格布局,并使用 DisplayLayout 对象上的 CopyFrom 方法将它们加载回来。

当我加载这些保存的布局之一时,网格被适当修改并且数据仍然在网格中正确显示,但是任何时候我要求在一行上显示 ListObject,它 returns无效的。网格的数据源是 BindingSource,其 DataSourceBindingList(加载布局时不会更改此数据)。

保存:

Dim MS As New IO.MemoryStream()
ugl.Save(MS, Infragistics.Win.UltraWinGrid.PropertyCategories.All)
Return MS.ToArray()

加载:

Private Function ConvertToUltraGridLayout(data As Byte()) As UltraGridLayout
    Dim ugl As New UltraGridLayout()
    Dim MS As New IO.MemoryStream(data)
    MS.Seek(0, IO.SeekOrigin.Begin)
    ugl.Load(MS, Infragistics.Win.UltraWinGrid.PropertyCategories.All)
    Return ugl
End Function

dgrServices.DisplayLayout.CopyFrom(ConvertToUltraGridLayout(lOption.Layout))

我需要做什么才能使 ListObject 不为空?

谢谢!

我用来获取行 ListObject 的代码是 dgrServices.Rows。我正在加载的原因 DisplayLayout 应用了分组依据。这会导致行层次结构发生变化,以便它可以放置特殊组 header 行。正确的是,这些没有 ListObject.

现在我只需要找出最简单的方法来获取网格中的数据绑定行并跳过这些特殊组 header 行。

http://help.infragistics.com/Help/Doc/WinForms/2012.1/CLR2.0/html/Infragistics2.Win.UltraWinGrid.v12.1~Infragistics.Win.UltraWinGrid.UltraGridBase~Rows.html