Skip to main content

DevExpress v24.2 Update — Your Feedback Matters

Our What's New in v24.2 webpage includes product-specific surveys. Your response to our survey questions will help us measure product satisfaction for features released in this major update and help us refine our plans for our next major release.

Take the survey Not interested

ColumnView.SubstituteFilter Event

Allows you to update or replace the filter that is about to be applied with a custom filter.

Namespace: DevExpress.XtraGrid.Views.Base

Assembly: DevExpress.XtraGrid.v24.2.dll

NuGet Packages: DevExpress.Win.Grid, DevExpress.Win.Navigation

#Declaration

[DXCategory("Data")]
public event EventHandler<SubstituteFilterEventArgs> SubstituteFilter

#Event Data

The SubstituteFilter event's data class is SubstituteFilterEventArgs. The following properties provide information specific to this event:

Property Description
Filter Gets or sets the filter applied to a data control.

#Remarks

The SubstituteFilter event fires when a new filter is about to be applied to the data. The event allows you to update or replace the filter with a custom filter.

The Filter event argument gets or sets an object that specifies the filter that is about to be applied. To replace or update this filter, assign a new object to this argument or use the logical AND operator to combine the existing object with the new object. Do not modify the existing filter object.

#Example

The code below shows how to handle the SubstituteFilter event to update the filter applied in the grid with a filter selected in a combo box.

image

using DevExpress.Data.Filtering;
using DevExpress.Data;

private void Form1_Load(object sender, EventArgs e) {
    DataSet ds = new DataSet();
    ds.ReadXml("nwind.xml");
    this.GridControl.DataSource = ds;
    this.GridControl.DataMember = "Orders";
    this.GridView.ActiveFilterCriteria = CriteriaOperator.Parse("Freight > 0");
}

private void GridView_SubstituteFilter(object sender, SubstituteFilterEventArgs e) {
    e.Filter &= CriteriaOperator.Parse("getyear(OrderDate) = ?", Convert.ToInt32(this.beiShowByYear.EditValue));
}

private void beiShowByYear_EditValueChanged(object sender, EventArgs e) {
    CriteriaOperator filter = this.GridView.ActiveFilterCriteria;
    this.GridView.BeginDataUpdate();
    try {
        this.GridView.ActiveFilterCriteria = null;
        this.GridView.ActiveFilterCriteria = filter;
    } finally {
        this.GridView.EndDataUpdate();
    }
}

View Example

See Also