ComponentOne DataFilter for WPF
DataFilters / Filter Summaries
In This Topic
    Filter Summaries
    In This Topic

    DataFilter control allows you to configure the Checklist filter to implement the filter summaries using AggregateType property of the FilterSummary class and by assigning AggregateType Enum. The feature makes it easier for you to analyze the count, sum, maximum and minimum values of the filter items.

    Let us take a use case to display count and maximum values of the filter items in a checklist filter. In the image and example below, count of the individual filter items of the Brand filter are listed and maximum price values for the filter items in the Category filter are listed.

    The image depicts an application showing the Datafilter showing filter summaries.

    You can use the following code to display the count of the filter items and the maximum value of a filter item corresponding to the data.

    Private Sub C1DataFilter_FilterAutoGenerating(sender As Object, e As C1.DataFilter.FilterAutoGeneratingEventArgs)
        Select Case e.[Property].Name
            Case "Name"
                Dim brandFilter = CType(e.Filter, C1.WPF.DataFilter.ChecklistFilter)
                brandFilter.ItemsSource = _products
                brandFilter.ValueMemberPath = "Name"
                'Define the summary for the Checklist filter defined for Brand Field.
                'This summary displays the count of cars available for each brand.
                brandFilter.FilterSummary.AggregateType = AggregateType.Count
                brandFilter.FilterSummary.Label = "Count"
                brandFilter.FilterSummary.PropertyName = "Name"
                'Select all the filter items
                brandFilter.SelectAll()
            Case "Color"
                Dim categoryFilter = CType(e.Filter, C1.WPF.DataFilter.ChecklistFilter)
                categoryFilter.ItemsSource = _products
                categoryFilter.ValueMemberPath = "Color"
                'Define the summary for the Checklist filter defined for Category Field.
                'This summary displays the maximum price of cars for the specific category.
                categoryFilter.FilterSummary.AggregateType = AggregateType.Max
                categoryFilter.FilterSummary.Label = "Max"
                categoryFilter.FilterSummary.PropertyName = "Price"
    
                'Select all the filter items
                categoryFilter.SelectAll()
            Case "Price"
                Dim priceFilter = CType(e.Filter, C1.WPF.DataFilter.RangeFilter)
                priceFilter.Maximum = _products.AsEnumerable().Max(Function(x) x.Price)
                priceFilter.Minimum = _products.AsEnumerable().Min(Function(x) x.Price)
                priceFilter.Increment = 1000
                priceFilter.Digits = 0
            Case Else
                e.Cancel = True
        End Select
    End Sub
    
    private void C1DataFilter_FilterAutoGenerating(object sender, C1.DataFilter.FilterAutoGeneratingEventArgs e)
    {
        switch (e.Property.Name)
        {
            //Set the checklist items for Brand filter
            case "Name":
                var brandFilter = (C1.WPF.DataFilter.ChecklistFilter)e.Filter;
                brandFilter.ItemsSource = _products;
                brandFilter.ValueMemberPath = "Name";
                //Define the summary for the Checklist filter defined for Brand Field.
                //This summary displays the count of cars available for each brand.
                brandFilter.FilterSummary.Label = "Count";
                brandFilter.FilterSummary.PropertyName = "Name";
                brandFilter.FilterSummary.AggregateType = AggregateType.Count;
    
                //Select all the filter items
                brandFilter.SelectAll();
                break;
            //Set the checklist items for Category filter
            case "Color":
                var categoryFilter = (C1.WPF.DataFilter.ChecklistFilter)e.Filter;
                categoryFilter.ItemsSource = _products;
                categoryFilter.ValueMemberPath = "Color";
                //Define the summary for the Checklist filter defined for Category Field.
                //This summary displays the maximum price of cars for the specific category.
                categoryFilter.FilterSummary.Label = "Max";
                categoryFilter.FilterSummary.PropertyName = "Price";
                categoryFilter.FilterSummary.AggregateType = AggregateType.Max;
    
                //Select all the filter items
                categoryFilter.SelectAll();
                break;
            //Set the minimum/maximum value for the Price filter
            case "Price":
                var priceFilter = (C1.WPF.DataFilter.RangeFilter)e.Filter;
                priceFilter.Maximum = _products.AsEnumerable().Max(x => x.Price);
                priceFilter.Minimum = _products.AsEnumerable().Min(x => x.Price);
                priceFilter.Increment = 1000;
                priceFilter.Digits = 0;
                break;
            //Cancels the creation of all other filters
            default:
                e.Cancel = true;
                break;
        }
    }