DataFilter for WinForms
フィルタの概要
DataFilter > フィルタの概要

DataFilter control allows you to configure the Checklist filter to implement the filter summaries using AggregateType property 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.

You can use the follwing code to display the count of the filter items and the maximum value of a filter item corresponding to the data as shown in the above example using AggregateType property.

private void c1DataFilter1_FilterAutoGenerating(object sender, C1.DataFilter.FilterAutoGeneratingEventArgs e)
        {
            switch (e.Property.Name)
            {
                //Brandフィルターのチェックリスト項目を設定します
                case "Brand":
                    brandFilter = (C1.Win.DataFilter.ChecklistFilter)e.Filter;
                    brandFilter.ItemsSource = c1NWindDataSet.Cars;
                    brandFilter.ValueMemberPath = "Brand";

                    //Brandフィールドに対して定義されているChecklistフィルタの概要を定義します
                    //この概要には、各ブランドで利用可能な車の数が表示されます
                    brandFilter.FilterSummary.AggregateType = AggregateType.Count;
                    brandFilter.FilterSummary.Label = "Count";
                    brandFilter.FilterSummary.PropertyName = "Brand";
                    //すべてのフィルター項目を選択します
                    brandFilter.SelectAll();
                    break;

                //Categoryフィルタのチェックリスト項目を設定します
                case "Category":
                    var categoryFilter = (C1.Win.DataFilter.ChecklistFilter)e.Filter;
                    categoryFilter.ItemsSource = c1NWindDataSet.Cars;
                    categoryFilter.ValueMemberPath = "Category";

                    //Categoryフィールドに対して定義されているChecklistフィルタの概要を定義します
                    //この概要には、特定のカテゴリの車の最高価格が表示されます
                    categoryFilter.FilterSummary.AggregateType = AggregateType.Max;
                    categoryFilter.FilterSummary.Label = "Max";
                    categoryFilter.FilterSummary.PropertyName = "Price";

                    //すべてのフィルター項目を選択します
                    categoryFilter.SelectAll();
                    break;

                //Priceフィルタの最小/最大値を設定します
                case "Price":
                    var priceFilter = (C1.Win.DataFilter.RangeFilter)e.Filter;
                    priceFilter.Maximum = c1NWindDataSet.Cars.AsEnumerable().Max(x => x.Field<double>("Price"));
                    priceFilter.Minimum = c1NWindDataSet.Cars.AsEnumerable().Min(x => x.Field<double>("Price"));
                    priceFilter.Increment = 1000;
                    priceFilter.Digits = 0;
                    break;
                //他のすべてのフィルターの作成をキャンセルします
                default:
                    e.Cancel = true;
                    break;
            }
        }