Back to Devexpress

PivotCellEventArgsBase<TField, TData, TCustomTotal>.GetFieldValue(TField) Method

corelibraries-devexpress-dot-xtrapivotgrid-dot-pivotcelleventargsbase-3-dot-getfieldvalue-x28-0-x29.md

latest4.1 KB
Original Source

PivotCellEventArgsBase<TField, TData, TCustomTotal>.GetFieldValue(TField) Method

Returns the value of the specified column or row field that identifies the column/row in which the processed cell resides.

Namespace : DevExpress.XtraPivotGrid

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

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

Declaration

csharp
public object GetFieldValue(
    TField field
)
vb
Public Function GetFieldValue(
    field As TField
) As Object

Parameters

NameTypeDescription
fieldTField

A T object that identifies the field whose value is returned.

|

Returns

TypeDescription
Object

The field value.

|

Remarks

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