Определение состояния фильтра в xamDataGrid

В приложении WPF, которое я разрабатываю, я хотел бы программно определить, настроены ли в xamDataGrid какие-либо фильтры или нет.

Я настроил функцию экспорта в Excel и хотел бы быстро проверить, активен ли фильтр или нет. Если фильтр активен, я предоставлю пользователю возможность экспортировать отфильтрованные строки или нет. .

Я не могу найти подходящих членов класса.

Любые идеи?


person Drammy    schedule 13.02.2013    source источник


Ответы (2)


Нашел ответ, ребята и девчонки...

    var activeFilterCount = xamDataGrid1.FieldLayouts[0].RecordFilters.Sum(recordFilter => recordFilter.Conditions.Count);
person Drammy    schedule 13.02.2013

XamDataGrid может иметь более одного макета поля (иерархическая структура). В этом случае вам нужно рассмотреть все 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 сохраняются для FieldLayout в XamDataGrid.

В более ранней версии они хранятся в RecordManger вместо grid. Так что это полное решение для повторения всех FieldLayouts.

Как под сеткой:Multiple Layout and Filters can be applied on every Layout/Level

XamDataGrid с несколькими макетами

person Kylo Ren    schedule 19.03.2015