2

在我正在开发的 WPF 应用程序中,我想以编程方式确定 xamDataGrid 是否配置了任何过滤器。

我已经为 Excel 配置了导出功能,并想快速检查以确定过滤器是否处于活动状态,如果过滤器处于活动状态,那么我将向用户展示是否导出过滤行的选项。 .

我找不到任何合适的班级成员。

有任何想法吗?

4

2 回答 2

3

找到答案男生和女生...

    var activeFilterCount = xamDataGrid1.FieldLayouts[0].RecordFilters.Sum(recordFilter => recordFilter.Conditions.Count);
于 2013-02-13T21:59:09.870 回答
1

AXamDataGrid可以有多个字段布局(分层结构)。在这种情况下,您需要考虑所有FieldLayouts而不仅仅是第一个。所以完整的解决方案是:

 public bool AreFiltersActive()
 {
   int activeFilterCount = 0;
   foreach (FieldLayout f in xamDataGrid.FieldLayouts)
   {
     activeFilterCount+= f.RecordFilters.Sum(recordFilter => recordFilter.Conditions.Count);
     //retrieve filter count per layout
   }        
   return activeFilterCount > 0;
   //If any fieldlayout has any filter active then the sum will be more than 0
 }

Filters存储 per FieldLayoutin是有原因的XamDataGrid

在早期版本中,它们存储RecordMangergrid. 所以这是迭代 all 的完整解决方案FieldLayouts

像下面的网格:Multiple Layout and Filters can be applied on every Layout/Level

具有多种布局的 XamDataGrid

于 2015-03-19T10:56:54.430 回答