A newer version of this page is available. Switch to the current version.

Filter and Search

  • 9 minutes to read

When filtering is applied to a View, displayed records are restricted to those that meet the current filter criteria. You can filter data against single or multiple columns.

Filtering Dropdown Menus (Excel Style)

To invoke a filtering dropdown menu for a column, click the filter icon within the column header. In the "Values" tab, end-users can select specific cell values from those that are currently displayed by the Data Grid.

Grid - Excel Filter Dropdown Menu Values

The "Filters" tab gives users a wider pool of filtering options. For example, when filtering by dates, you can only show those records that correspond to the previous week.

Grid - Excel Filter Dropdown Menu

The content of a filtering dropdown menu depends on the type of data displayed by the related grid column. For instance, the figure below illustrates what this menu looks like when filtering by a numeric column.

Grid - Excel Filter Dropdown Menu Numeric Data

This type of filtering dropdown menus is called Excel-style dropdowns and is the default filtering menu type starting with version 17.1.

NOTE

Related API * GridOptionsCustomization.AllowFilter - disables filtering for the entire Data Grid.

See the Advanced Filter and Search Concepts article to learn how to dynamically customize Excel-style menus.

Classic Filtering Dropdown Menus

Instead of Excel-style dropdowns, the Data Grid can display classic filtering menus. These are calendars for the DateTime columns and regular dropdowns for columns of other types.

Grid - Classic Filter Dropdowns

NOTE

Related API * ColumnViewOptionsFilter.ColumnFilterPopupMode - set this property to Classic in order to enable classic filtering dropdowns for DevExpress installations of versions 17.1 and newer. In older versions, classic menus are enabled by default.

You can opt for checked list menus instead of regular dropdown menus.

FilterDropdown-Checked.png

NOTE

Related API * OptionsColumnFilter.FilterPopupMode - set to CheckedList to enable this filtering menu style.

Calendar filtering menus can also be replaced with checked lists. Additionally, you can select between three types of calendar-based menus: DateSmart (default menu type), DateAlt and Date. The figure below illustrates the DateAlt menu.

CalendarFilterDropdown-DateAlt.png

All three menus feature the same calendar for selecting a specific date, but with different sets of check boxes to select non-intersecting date intervals. The table below lists some of these intervals.

DateSmart

Date

DateAlt

Check boxes are visible only if there are Data Grid records that fall into corresponding intervals.

  • Beyond this year - dates that follow the current year.
  • Later this year - dates of the current year starting with the following month.
  • Later this month - dates of the current month that follow next week.
  • Next week - dates that belong to the following week.
  • Later this week - dates of the current week starting with the day after tomorrow.
  • Earlier this week - dates of the current week that are prior to yesterday.
  • Last week - dates of the previous week.
  • Earlier this year - dates of the current year that are prior to the current month.
  • Prior to this year - dates that are prior to the current year.

Same time intervals as for the DateSmart type. All check boxes are available, even if there is no data that falls into a corresponding date range.

  • Beyond - dates that belong to the month in three months time and beyond.
  • Earlier - dates that belong to the month seven months ago and earlier.
NOTE

Related API * OptionsColumnFilter.FilterPopupMode - set this property to either Date, DateSmart or DateAlt to choose the required calendar-based dropdown menu.

Automatic Filtering Row

Video Tutorial (Online)

Another way to filter data at runtime is to utilize the automatic filtering row. This row is displayed above regular data rows and allows end-users to type in filtering values (including '*' and '%' wildcards) and select filter operators (NotLike, Equals, Between, etc.).

Grid - Auto Filter Row Grid - Auto Filter Row Animation

NOTE

Related API * GridOptionsView.ShowAutoFilterRow - manages the visibility of the automatic filtering row.

Filter Panel

When you apply filtering, a View shows a filter panel. End-users can utilize this panel to modify and remove current filters.

Grid - Filter Panel Layout

NOTE

Related API * ColumnViewOptionsView.ShowFilterPanelMode - manages the filter panel visibility.

End-users can focus a grid column and start typing. The Data Grid will focus and highlight the first matching record. To find other records, press Ctrl+Up and Ctrl+Down hotkeys.

Data Grid - Filtering - Incremental Search

NOTE

Related API * GridOptionsBehavior.AllowIncrementalSearch - enables or disables this feature.

Filter Editor

The Filter Editor dialog allows end-users to build complex filtering criteria, combined from multiple expressions. To invoke this dialog end-users can do one of the following:

Grid - Filter Editor

You can modify the ColumnViewOptionsFilter.DefaultFilterEditorView property to enable the Filter Editor's "Text" panel\tab, where users can type filter expressions manually.

New Filter Editor Control

Starting with version 18.1, the legacy Filter Editor is replaced with its updated version that features the advanced "Text" panel. This panel now supports syntax highlighting and auto-complete to facilitate the input. To revert data-aware controls back to the legacy Filter Editor version, disable the static WindowsFormsSettings.UseAdvancedFilterEditorControl property.

NOTE

Related API * ColumnViewOptionsFilter.AllowFilterEditor - gets or sets whether or not the Filter Editor is available.

  • ColumnView.CustomFilterDialog - handle this event to alter the default behavior for end-users clicking the "Custom" filter drop-down menu item. See Advanced Filter and Search Concepts to learn more.
  • ColumnView.FilterEditorCreated - this event fires when the Filter Editor is about to be shown. Allows you to customize the Editor dialog or prevent it from being displayed.

    Show example

    The code below allows end-users to filter the "Price" column's data by using the SpinEdit and CalcEdit editors.

    FilterControl - Custom Editor

    
    private void GridView1_FilterEditorCreated(object sender, DevExpress.XtraGrid.Views.Base.FilterControlEventArgs e) {
        e.FilterControl.BeforeShowValueEditor += FilterControl_BeforeShowValueEditor;
    }
    
    private void FilterControl_BeforeShowValueEditor(object sender, DevExpress.XtraEditors.Filtering.ShowValueEditorEventArgs e) {
        if (e.CurrentNode.FirstOperand.PropertyName != "Price") return;
        RepositoryItemTextEdit item = null;
        if (e.FocusedElementIndex == 2)
            item = new RepositoryItemSpinEdit();
        else
            item = new RepositoryItemCalcEdit();
        item.Mask.MaskType = DevExpress.XtraEditors.Mask.MaskType.Numeric;
        item.Mask.EditMask = "c";
        e.CustomRepositoryItem = item;
    }
    
  • ColumnViewOptionsFilter.UseNewCustomFilterDialog - enable this property to allow end-users to filter values of a GridColumn not only against a constant custom value, but also against values of other GridColumns.

Find Panel

The Find Panel allows your end-users to apply a temporary filter that filters data across all Data Grid columns at once. To invoke this panel, press "Ctrl+F" at runtime. Type in text you need to search for, then press Enter or click "Find".

Grid - Find Panel

Note that the Find Panel does not highlight cells with HTML text.

NOTE

Related API * ColumnViewOptionsFind.AllowFindPanel - manages the availability of the Find Panel.

See Find Panel to learn more.