【发布时间】:2013-05-14 17:10:31
【问题描述】:
我们想用 Winforms 过滤 XtraGrid 中的一些行。 RefreshData() 可能需要很长时间(似乎所有行都从 DB 中读取)。
触发事件的方法似乎隐藏在DevExpress的深处,
DevExpress.XtraGrid.Views.Base.ColumnView.RaiseCustomRowFilter(Int32 listSourceRow)
(受保护的内部方法)
如果只知道 Gridview,有什么方法可以触发事件?
我的问题从第一阶段开始。如何获取方法?
MethodInfo methodInfo = gridView.GetType().GetMethod("RaiseCustomRowFilter"); 返回空
【问题讨论】:
-
你为什么不直接使用数据视图并过滤它?
-
@Stig 我认为 DataView 适用于 cutomers 过滤器。我们还想添加一个不可见的过滤器,它只用于“软删除”项目。 DataView 也可以是一个额外的抽象级别,这个用例是否需要它?
-
DataView 是常规 DataTable 之上的虚拟 DataTable。用于过滤客户端上的数据源。如果您不使用 DataTables 来保存数据,还有其他过滤源的方法。您始终可以使用 DataSource 过滤数据。
-
这种方法几乎没有问题:我们谈论的是“成长”产品。如果某些东西正在改变数据源,那么获得一个不错的红十字的可能性非常大(即使使用 gridview.BeginDataEdit()...EndDataEdit)。这也可能需要很长时间。额外的 Bindingsource 也将是额外的抽象级别。有趣的是,我们有一个第三方 ORM,我们的数据源是从 bindingsource 继承的。除了它不支持过滤...此外,对此的更改在 DataGridView 中不可见,除非 DGV 正在执行完全刷新。
-
很遗憾听到这个消息,但是如果您的数据源支持 IBindingListView,它已经有一个过滤器选项。以这种方式过滤(使用合理的数据量)从来没有任何性能问题
标签: c# devexpress