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

Header Filter

  • 3 minutes to read

Column headers can display filter buttons. Clicking a filter button invokes a filter dropdown, which lists unique values within a column, and enables you to apply filter criteria against this column. The buttons are hidden by default. To show filter buttons, set the ASPxGridSettings.ShowHeaderFilterButton property to true. Note that if a filter is applied to a column, other column header filters display unique values of the sorted cards. To show the full list of values (include values of cards hidden by sorting), hold down SHIFT and click a header filter button.

Header Filter Modes

Four list modes are available for filter dropdowns - GridHeaderFilterMode.List, GridHeaderFilterMode.CheckedList, GridHeaderFilterMode.DateRangePicker and GridHeaderFilterMode.DateRangeCalendar. A particular filter mode can be specified for individual columns using a column's GridDataColumnHeaderFilterSettings.Mode property. If this property is set to CheckedList for a column, the column's header filter dropdown contains a check box list, allowing end-users to select multiple items to be included in the filter criteria.

ASPxCardview_HeaderFilterModes

If the GridDataColumnHeaderFilterSettings.Mode property is set to DateRangePicker or DateRangeCalendar, the column's header filter dropdown contains a date range picker or a calendar, respectively.

ASPxCardview_HeaderFilterMode-2

Custom Header Filter Items

The ASPxCardView allows you to create custom filter values, define a filter criteria for them and display these values within a column's filter dropdown. To do this, handle the ASPxCardView.HeaderFilterFillItems event. Within the event, you can access the filter default values using the ASPxGridHeaderFilterEventArgs.Values event parameter, and clear them if you need. To add a new filter item, use the ASPxGridHeaderFilterEventArgs.AddValue method. In List mode, you can use the ASPxGridHeaderFilterEventArgs.AddShowAll method to add a ShowAll button to the list.

The FilterValue.CreateShowAllValue, FilterValue.CreateShowBlanksValue, and FilterValue.CreateShowNonBlanksValue methods can be used to create the corresponding filter items.

This example shows how to create custom filter items and display them within the Quantity column's filter dropdown.

The image below shows the result:

ASPxCardView_Ex_HeaderFilterFillItems

protected void CardView_HeaderFilterFillItems(object sender, ASPxCardViewHeaderFilterEventArgs e)
{
    if (e.Column.FieldName != "Quantity") return;
    e.AddValue("nonzero", string.Empty, "[Quantity] != 0");
    e.AddValue(String.Format("from {0} to {1}", 0, 50), string.Empty, String.Format("[Quantity] > {0} and [Quantity] < {1}", 0, 50));
    e.AddValue(String.Format(">= {0}", 50), string.Empty, String.Format("[Quantity] >= {0}", 50));
}

Using HTML tags in an item text

ASPxCardView header filter allows the use of HTML tags in an item text. This example demonstrates how you can set numbers off in bold by using HTML tags within an item's format pattern. The image below shows the result.

ASPxCardView_Ex_HeaderFilter_HtmlTag

    protected void CardView_HeaderFilterFillItems(object sender, ASPxCardViewHeaderFilterEventArgs e)
    {
        if (e.Column.FieldName == "Total")
            PrepareTotalFilterItems(e);
        if (e.Column.FieldName == "Quantity")
            PrepareQuantityFilterItems(e);
    }
   ...
    protected virtual void PrepareQuantityFilterItems(ASPxCardViewHeaderFilterEventArgs e) {
        int max = 0;
        for(int i = 0; i < e.Values.Count; i++) {
            int value;
            if(!int.TryParse(e.Values[i].Value, out value)) continue;
            if(value > max) max = value;
        }
        e.Values.Clear();
        if(e.Column.Settings.HeaderFilterMode == HeaderFilterMode.List)
        e.AddShowAll();
        int step = 10;
        for(int i = 0; i < max / step + 1; i++) {
            int start = step * i;
            int end = start + step - 1;
            e.AddValue(string.Format("from <b>{0}</b> to <b>{1}</b>", start, end), "", string.Format("[Quantity] >= {0} and [Quantity] <= {1}", start, end));
        }   
    }
See Also