Back to Devexpress

PivotGridControl.FieldFilterChanging Event

wpf-devexpress-dot-xpf-dot-pivotgrid-dot-pivotgridcontrol-0a5ab8d0.md

latest10.5 KB
Original Source

PivotGridControl.FieldFilterChanging Event

Allows you to customize or cancel the applied filter.

Namespace : DevExpress.Xpf.PivotGrid

Assembly : DevExpress.Xpf.PivotGrid.v25.2.dll

NuGet Package : DevExpress.Wpf.PivotGrid

Declaration

csharp
public event PivotFieldFilterChangingEventHandler FieldFilterChanging
vb
Public Event FieldFilterChanging As PivotFieldFilterChangingEventHandler

Event Data

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

PropertyDescription
CancelGets or sets whether to cancel changing the filter condition.
FieldGets the field being processed. Inherited from PivotFieldEventArgs.
FilterTypeGets the current filter type.
HandledGets or sets a value that indicates the present state of the event handling for a routed event as it travels the route. Inherited from RoutedEventArgs.
OriginalSourceGets the original reporting source as determined by pure hit testing, before any possible Source adjustment by a parent class. Inherited from RoutedEventArgs.
RoutedEventGets or sets the RoutedEvent associated with this RoutedEventArgs instance. Inherited from RoutedEventArgs.
SourceGets or sets a reference to the object that raised the event. Inherited from RoutedEventArgs.
ValuesGets the collection of filter values, about to be assigned to the filter.

The event data class exposes the following methods:

MethodDescription
InvokeEventHandler(Delegate, Object)When overridden in a derived class, provides a way to invoke event handlers in a type-specific way, which can increase efficiency over the base implementation. Inherited from RoutedEventArgs.
OnSetSource(Object)When overridden in a derived class, provides a notification callback entry point whenever the value of the Source property of an instance changes. Inherited from RoutedEventArgs.

Remarks

The FieldFilterChanging event occurs before a field filter condition is changed. To obtain the collection of filter values you want to assign to the filter, use the event parameter’s PivotFieldFilterChangingEventArgs.Values property. To cancel changing the current filter values collection, set the PivotFieldFilterChangingEventArgs.Cancel property to true. The event parameter’s PivotFieldEventArgs.Field and PivotFieldFilterChangingEventArgs.FilterType properties allow you to obtain the current filter type and the field for which the filter condition is changed.

After the filter condition is changed, the PivotGridControl.FieldFilterChanged event is fired.

Note

To remove default filter items and add custom items instead, use the PivotGridControl.CustomFilterPopupItems event.

Example

The following example shows how to prevent end-users from changing the filter condition.In this example, the FieldFilterChanging event is handled to prevent an end-user from hiding the 'Beverages' field value. If an end-user tries to hide the 'Beverages' field value, the event handler sets the event parameter's Cancel property to true to cancel changing the filter condition.

xaml
<Window xmlns:dxpg="http://schemas.devexpress.com/winfx/2008/xaml/pivotgrid" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:dxb="http://schemas.devexpress.com/winfx/2008/xaml/bars" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="DXPivotGrid_CancelFilterChanging.MainWindow" Height="500" Width="650" Title="Main Window">
    <Grid>
        <dxpg:PivotGridControl FieldFilterChanging="pivotGridControl1_FieldFilterChanging" Name="pivotGridControl1">
            <dxpg:PivotGridControl.Fields>
                <dxpg:PivotGridField Name="fieldProductSales" FieldName="ProductSales" Area="DataArea" Caption="Product Sales" />
                <dxpg:PivotGridField Name="fieldCategoryName" FieldName="CategoryName" Area="RowArea" AreaIndex="0" Caption="Category Name" />
                <dxpg:PivotGridField Name="fieldProductName" FieldName="ProductName" Area="RowArea" AreaIndex="1" Caption="Product Name" />
                <dxpg:PivotGridField Name="fieldShippedDate" FieldName="ShippedDate" Area="ColumnArea" GroupInterval="DateYear" Caption="Year" />
            </dxpg:PivotGridControl.Fields>
        </dxpg:PivotGridControl>
    </Grid>
</Window>
vb
Imports Microsoft.VisualBasic
Imports System.Windows
Imports DevExpress.Xpf.PivotGrid
Imports DXPivotGrid_CancelFilterChanging.DataSet1TableAdapters

Namespace DXPivotGrid_CancelFilterChanging
    Partial Public Class MainWindow
        Inherits Window
        Private productReportsDataTable As New DataSet1.ProductReportsDataTable()
        Private productReportsDataAdapter As New ProductReportsTableAdapter()
        Public Sub New()
            InitializeComponent()
            pivotGridControl1.DataSource = productReportsDataAdapter.GetData()
        End Sub

        Private Sub pivotGridControl1_FieldFilterChanging(ByVal sender As Object, _
                    ByVal e As PivotFieldFilterChangingEventArgs)
            If Equals(e.Field, fieldCategoryName) Then
                If (e.Field.FilterValues.FilterType = FieldFilterType.Excluded AndAlso _
                            e.Values.Contains("Beverages")) OrElse _
                            (e.Field.FilterValues.FilterType = FieldFilterType.Included AndAlso _
                            (Not e.Values.Contains("Beverages"))) Then
                    MessageBox.Show("You are not allowed to hide the 'Beverages' value.")
                    e.Cancel = True
                End If
            End If
        End Sub
    End Class
End Namespace
csharp
using System.Windows;
using DevExpress.Xpf.PivotGrid;
using DXPivotGrid_CancelFilterChanging.DataSet1TableAdapters;

namespace DXPivotGrid_CancelFilterChanging {
    public partial class MainWindow : Window {
        DataSet1.ProductReportsDataTable productReportsDataTable =
            new DataSet1.ProductReportsDataTable();
        ProductReportsTableAdapter productReportsDataAdapter = new ProductReportsTableAdapter();
        public MainWindow() {
            InitializeComponent();
            pivotGridControl1.DataSource = productReportsDataAdapter.GetData();
        }
        private void pivotGridControl1_FieldFilterChanging(object sender,
                                        PivotFieldFilterChangingEventArgs e) {
            if (Equals(e.Field, fieldCategoryName)) {
                if ((e.Field.FilterValues.FilterType == FieldFilterType.Excluded &&
                        e.Values.Contains("Beverages")) ||
                    (e.Field.FilterValues.FilterType == FieldFilterType.Included &&
                        !e.Values.Contains("Beverages"))) {
                    MessageBox.Show("You are not allowed to hide the 'Beverages' value.");
                    e.Cancel = true;
                }
            }
        }
    }
}

See Also

Values

Cancel

Field

FilterType

FieldFilterChanged

PivotGridControl Class

PivotGridControl Members

DevExpress.Xpf.PivotGrid Namespace