Back to Devexpress

PivotCellEventArgsBase<TField, TData, TCustomTotal>.GetCellValue(Object[], Object[], TField) Method

corelibraries-devexpress-dot-xtrapivotgrid-dot-pivotcelleventargsbase-3-dot-getcellvalue-x28-system-dot-object-system-dot-object-0-x29.md

latest5.7 KB
Original Source

PivotCellEventArgsBase<TField, TData, TCustomTotal>.GetCellValue(Object[], Object[], TField) Method

Returns a cell value calculated for the specified column and row field values, against the specified data field.

Namespace : DevExpress.XtraPivotGrid

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

NuGet Packages : DevExpress.PivotGrid.Core, DevExpress.Win.Navigation

Declaration

csharp
public object GetCellValue(
    object[] columnValues,
    object[] rowValues,
    TField dataField
)
vb
Public Function GetCellValue(
    columnValues As Object(),
    rowValues As Object(),
    dataField As TField
) As Object

Parameters

NameTypeDescription
columnValuesObject[]

An array of column values.

| | rowValues | Object[] |

An array of row values.

| | dataField | TField |

A T object that specifies the data field, against which the required cell value is calculated.

|

Returns

TypeDescription
Object

A summary value calculated for the specified column and row field values, against the specified data field.

|

Remarks

The following table illustrates how to use the GetCellValue method to obtain specific cell values:

CellC#Visual Basic
Bluee.GetCellValue(new object[] {1995, 1}, new object[] {"Alice Mutton"}, fieldProductAmount);e.GetCellValue(New Object() {1995, 1}, New Object() {"Alice Mutton"}, fieldProductAmount)
Rede.GetCellValue(new object[] {1995}, new object[] {"Chai"}, fieldProductAmount);e.GetCellValue(New Object() {1995}, New Object() {"Chai"}, fieldProductAmount)
Greene.GetCellValue(null, new object[] {"Chang"}, fieldProductAmount);e.GetCellValue(Nothing, New Object() {"Chang"}, fieldProductAmount)

The image below illustrates values that GetCellValue obtains.

Note

Note that the GetCellValue method returns values calculated based on the data source data and ignores custom cell values suppled with the CustomCellValue event. Use the e.Value property to obtain a custom cell value.

Example

This example calculates percentage based on the Beverages row value for each column. The Pivot Grid handles the PivotGridControl.CustomCellValue event to display a calculated percentage value in the cell that belongs to the % of Beverages Sales column. The grand total values are hidden.

View Example

cs
private void pivotGridControl1_CustomCellValue(object sender, PivotCellValueEventArgs e) {
    // Calculates the 'Percent' field values.
    if (e.DataField.Name == "PercentOfBeverages") {
        // Hides grand total values.
        if (e.RowValueType == PivotGridValueType.GrandTotal) {
            e.Value = null;
            return;
        }
        var rowValues = e.GetRowFields().Select(f => 
            f == fieldCategoryName ? "Beverages" : e.GetFieldValue(f)).ToArray();
        var columnValues = e.GetColumnFields().Select(f => 
            f == fieldCategoryName ? "Beverages" : e.GetFieldValue(f)).ToArray();
        decimal beveragesValue = Convert.ToDecimal(e.GetCellValue(columnValues, rowValues, e.DataField));
        if (beveragesValue == 0)
            e.Value = null;
        else
            e.Value = Convert.ToDecimal(e.Value) / beveragesValue;
    }
    else return;
}
vb
Private Sub pivotGridControl1_CustomCellValue(ByVal sender As Object, ByVal e As PivotCellValueEventArgs) Handles pivotGridControl1.CustomCellValue
    ' Calculates the 'Percent' field values.
    If e.DataField.Name = "PercentOfBeverages" Then
        ' Do not display grand total values.
        If e.RowValueType = PivotGridValueType.GrandTotal Then
            e.Value = Nothing
            Return
        End If

        Dim rowValues = e.GetRowFields().Select(Function(f) If(f Is fieldCategoryName, "Beverages", e.GetFieldValue(f))).ToArray()
        Dim columnValues = e.GetColumnFields().Select(Function(f) If(f Is fieldCategoryName, "Beverages", e.GetFieldValue(f))).ToArray()
        Dim beveragesValue As Decimal = Convert.ToDecimal(e.GetCellValue(columnValues, rowValues, e.DataField))
        If beveragesValue = 0 Then
            e.Value = Nothing
        Else
            e.Value = Convert.ToDecimal(e.Value) / beveragesValue
        End If
    Else
        Return
    End If

See Also

PivotCellEventArgsBase<TField, TData, TCustomTotal> Class

PivotCellEventArgsBase<TField, TData, TCustomTotal> Members

DevExpress.XtraPivotGrid Namespace