VGridControl.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.XtraVerticalGrid
Assembly: DevExpress.XtraVerticalGrid.v19.1.dll
Declaration
[DXCategory("Behavior")]
public event FilterPopupExcelQueryFilterCriteriaEventHandler FilterPopupExcelQueryFilterCriteria
Event Data
The FilterPopupExcelQueryFilterCriteria event's data class is DevExpress.XtraVerticalGrid.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 VGridControl.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 vGridControl1_FilterPopupExcelData(object sender, DevExpress.XtraVerticalGrid.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 vGridControl1_FilterPopupExcelQueryFilterCriteria(object sender, DevExpress.XtraVerticalGrid.FilterPopupExcelQueryFilterCriteriaEventArgs e)
{
if (e.Properties.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)));
}
}