Skip to main content

PivotCustomFieldValueCellsEventArgsBase<T1, T2>.FindCell(Boolean, Predicate<Object[]>) Method

Returns the header of the column/row whose summary values match the specified condition.

Namespace: DevExpress.XtraPivotGrid

Assembly: DevExpress.PivotGrid.v22.2.Core.dll

NuGet Packages: DevExpress.PivotGrid.Core, DevExpress.Win.Dashboard.Design


public T2 FindCell(
    bool isColumn,
    Predicate<object[]> match


Name Type Description
isColumn Boolean

true to locate a column; false to locate a row.

match Predicate<Object[]>

A System.Predicate that specifies the condition used to locate the column/row.


Type Description

A FieldValueCellBase class descendant that specifies the header of the column/row whose summary values match the specified predicate; null if no columns/rows match the predicate.


Field value cells can also be obtained by their indexes via the PivotCustomFieldValueCellsEventArgsBase<T1, T2>.GetCell method.


The following example demonstrates how to handle the CustomFieldValueCells event to locate a specific column/row header identified by its column’s/row’s summary values.

In this example, a predicate is used to locate a column that contains only zero summary values. The column header is obtained by the event parameter’s FindCell method, and then removed via the Remove method.

using System;
using System.Globalization;
using System.Windows.Forms;
using DevExpress.XtraPivotGrid;

namespace XtraPivotGrid_FindCells {
    public partial class Form1 : Form {
        public Form1() {
            pivotGridControl1.CustomFieldValueCells += 
                new PivotCustomFieldValueCellsEventHandler(pivotGrid_CustomFieldValueCells);
        void Form1_Load(object sender, EventArgs e) {
            pivotGridControl1.DataSource = PivotHelper.GetDataTable();

        // Handles the CustomFieldValueCells event to remove columns with
        // zero summary values.
        protected void pivotGrid_CustomFieldValueCells(object sender,
                                     PivotCustomFieldValueCellsEventArgs e)
            PivotGridControl pivot = sender as PivotGridControl;
            if (pivot.DataSource == null) return;
            if (radioGroup1.SelectedIndex == 0) return;

            // Obtains the first encountered column header whose column
            // matches the specified condition, represented by a predicate.
            FieldValueCell cell = e.FindCell(true, new Predicate<object[]>(

                // Defines the predicate returning true for columns
                // that contain only zero summary values.
                delegate(object[] dataCellValues)
                    foreach (object value in dataCellValues)
                        if (!object.Equals((decimal)0, value))
                            return false;
                    return true;

            // If any column header matches the condition, this column is removed.
            if (cell != null) e.Remove(cell);
        void pivotGridControl1_FieldValueDisplayText(object sender,
                                        PivotFieldDisplayTextEventArgs e)
            PivotGridControl pivot = sender as PivotGridControl;
            if (e.Field == pivot.Fields[PivotHelper.Month])
                e.DisplayText = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName((int)e.Value);
        void radioGroup1_SelectedIndexChanged(object sender, EventArgs e)
See Also