Skip to main content
A newer version of this page is available. .

TreeList.FilterPopupExcelQueryFilterCriteria Event

Fires when a new data filter is about to be applied to the control using the Excel-style Filter Dropdown, and allows you to substitute the filter.

Namespace: DevExpress.XtraTreeList

Assembly: DevExpress.XtraTreeList.v18.2.dll

Declaration

[DXCategory("Behavior")]
public event FilterPopupExcelQueryFilterCriteriaEventHandler FilterPopupExcelQueryFilterCriteria

Event Data

The FilterPopupExcelQueryFilterCriteria event's data class is DevExpress.XtraTreeList.FilterPopupExcelQueryFilterCriteriaEventArgs.

Remarks

In the example below, a sample application displays video data. The “Tag” field stores video tags separated by commas as a single string. The TreeList.FilterPopupExcelData event splits these strings into individual tags available for end-users from the “Values” tab of Excel-styled filters. The FilterPopupExcelQueryFilterCriteria event is handled to replace the default “Equals” condition with “Contains”.

TreeList_FilterPopupExcelQueryFilterCriteria


using DevExpress.Data.Filtering;
using DevExpress.Utils.Filtering.Internal;

//create items that represent individual tags
private void treeList1_FilterPopupExcelData(object sender, DevExpress.XtraTreeList.FilterPopupExcelDataEventArgs e)
{
    if (e.Column.FieldName == "Tag")
    {
        var tags = e.DataItems.SelectMany(x => x.Text.Split(',', ';'))
            .OrderBy(x => x)
            .Distinct()
            .ToArray();
        e.DataItems.Clear();
        for (int i = 0; i < tags.Length; i++)
            e.AddData(tags[i], tags[i]);
    }

}
//modify filter criteria expressions
private void treeList1_FilterPopupExcelQueryFilterCriteria(object sender, DevExpress.XtraTreeList.FilterPopupExcelQueryFilterCriteriaEventArgs e)
{
    if (e.Column.FieldName == "Tag")
    {
        var viewModel = e.Value as ICollectionValueViewModel<string>;
        DevExpress.Data.Filtering.OperandProperty property = new DevExpress.Data.Filtering.OperandProperty(e.Path);
        e.FilterCriteria = GroupOperator.Or(viewModel.Values.Select(x =>
                   new FunctionOperator(FunctionOperatorType.Contains, property, x)));
    }

}
See Also