wpf-devexpress-dot-xpf-dot-pivotgrid-dot-pivotgridcontrol-0a5ab8d0.md
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
public event PivotFieldFilterChangingEventHandler FieldFilterChanging
Public Event FieldFilterChanging As PivotFieldFilterChangingEventHandler
The FieldFilterChanging event's data class is PivotFieldFilterChangingEventArgs. The following properties provide information specific to this event:
| Property | Description |
|---|---|
| Cancel | Gets or sets whether to cancel changing the filter condition. |
| Field | Gets the field being processed. Inherited from PivotFieldEventArgs. |
| FilterType | Gets the current filter type. |
| Handled | Gets 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. |
| OriginalSource | Gets the original reporting source as determined by pure hit testing, before any possible Source adjustment by a parent class. Inherited from RoutedEventArgs. |
| RoutedEvent | Gets or sets the RoutedEvent associated with this RoutedEventArgs instance. Inherited from RoutedEventArgs. |
| Source | Gets or sets a reference to the object that raised the event. Inherited from RoutedEventArgs. |
| Values | Gets the collection of filter values, about to be assigned to the filter. |
The event data class exposes the following methods:
| Method | Description |
|---|---|
| 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. |
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.
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.
<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>
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
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