数据源更改后重新应用列过滤器或禁止在数据源更改时重置过滤器

Reapply column filters after datasource change or disallow filter reset on datasource change

infragistics winforms 15.2 .net framework 4.0 可以吗?我注意到我可以通过 ultragrid.displaylayout.band(i).columnfilters 获得只读的 columnFilterCollection 对象,但我是否也可以设置此 属性 以便我能够应用我从中获得的相同列过滤器说 属性 的 getter?或者,如果这不可能,我可以禁止在数据源更改时重置过滤器吗?

经过进一步研究,我发现了两种可能有用的方法。我可以使用

UltraGrid.DisplayLayout.Bands(0).ColumnFilters.CopyTo()

UltraGrid.DisplayLayout.Bands(0).ColumnFilters.CopyFrom()

要达到这个效果?将不胜感激。

Private Function CopyByValue(ByVal input As Object, ByRef target As Object)
        Dim success As Boolean = True

        target = input

        Return success
End Function


Private _inventoryColumnFilters As Object = Nothing
CopyByValue(grdInventory.DisplayLayout.Bands(0).ColumnFilters,_inventoryColumnFilters)  
grdInventory.DisplayLayout.Bands(0).ColumnFilters.CopyFrom(TryCast(_inventoryColumnFilters, Infragistics.Win.UltraWinGrid.ColumnFiltersCollection))

这行得通。拥有一个确实具有 ColumnFilterCollection 参数或复制构造函数重载的 .CopyTo 是非常愚蠢的。