【问题标题】:Reapply column filters after datasource change or disallow filter reset on datasource change数据源更改后重新应用列过滤器或不允许在数据源更改时重置过滤器
【发布时间】:2016-03-08 14:29:33
【问题描述】:

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()

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

【问题讨论】:

  • 让我明白。如果您更改数据源,您如何认为基于先前列和值的旧过滤器集合对新数据源仍然有用?还是新数据源的架构与旧数据源相同?
  • 什么是 DataSource - 它是如何设置的?
  • @Steve 这由我们决定让他们相同。
  • @Plutonix 通过 ultragrid 的 datasource 属性设置为 DataTable 对象。
  • 我们似乎忽略了这个问题。目标是在发生数据源更改后将我们在数据源更改之前的过滤应用到网格。

标签: c# .net vb.net infragistics ultrawingrid


【解决方案1】:
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))

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

【讨论】:

  • 当我需要获取 ColumnFiltersCollection 时,我只使用了 Clone() 并且它起作用了。我不需要 ByVal 函数。
猜你喜欢
  • 1970-01-01
  • 2010-10-14
  • 1970-01-01
  • 2021-07-22
  • 2013-03-07
  • 2022-01-19
  • 1970-01-01
  • 2011-08-16
  • 1970-01-01
相关资源
最近更新 更多