ColumnView.FilterPopupExcelQueryFilterCriteria Event
Allows you to modify criteria expressions built when users filter Data Grid data in Excel-style filtering menus.
Namespace: DevExpress.XtraGrid.Views.Base
Assembly: DevExpress.XtraGrid.v19.1.dll
Declaration
[DXCategory("Behavior")]
public event FilterPopupExcelQueryFilterCriteriaEventHandler FilterPopupExcelQueryFilterCriteria
Event Data
The FilterPopupExcelQueryFilterCriteria event's data class is DevExpress.XtraGrid.Views.Grid.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 ColumnView.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”.
using DevExpress.Data.Filtering;
using DevExpress.Utils.Filtering.Internal;
//create items that represent individual tags
private void GridView1_FilterPopupExcelData(object sender, DevExpress.XtraGrid.Views.Grid.FilterPopupExcelDataEventArgs e) {
if (e.Column.FieldName == "Tag") {
var tags = e.DataItems.SelectMany(x => x.Text.Split(',', ';'))
.OrderBy(x => x)
.Distinct()
.ToArray();
e.ClearData();
for (int i = 0; i < tags.Length; i++)
e.AddData(tags[i], tags[i]);
}
}
//modify filter criteria expressions
private void GridView1_FilterPopupExcelQueryFilterCriteria(object sender, DevExpress.XtraGrid.Views.Grid.FilterPopupExcelQueryFilterCriteriaEventArgs e) {
if (e.Column.FieldName == "Tag") {
var viewModel = e.Value as ICollectionValueViewModel<string>;
OperandProperty property = new OperandProperty(e.Path);
e.FilterCriteria = GroupOperator.Or(viewModel.Values.Select(x =>
new FunctionOperator(FunctionOperatorType.Contains, property, x)));
}
}