2013-02-13 56 views
2

確定過濾器的狀態在一個WPF應用程序,我發展,我想以編程方式確定是否xamDataGrid具有配置或沒有任何過濾器。在xamDataGrid

我已配置導出功能到Excel,很想做一個快速檢查,以確定是否一個過濾器或者不是,如果過濾器是活動的,那麼我會向用戶呈現導出篩選行選項或不...

我找不到任何合適的類成員。

任何想法?

回答

3

找到了答案傢伙ñ女孩...

var activeFilterCount = xamDataGrid1.FieldLayouts[0].RecordFilters.Sum(recordFilter => recordFilter.Conditions.Count); 
1

一個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存儲每FieldLayoutXamDataGrid一個原因。

在早期版本中它們存儲在RecordMangergrid。因此,它是完整的解決方案,以迭代 所有FieldLayouts

像下面電網:Multiple Layout and Filters can be applied on every Layout/Level

XamDataGrid with multiple layouts