PivotGridControl.CellDoubleClick Event

Occurs when a cell is double-clicked.

Namespace: DevExpress.XtraPivotGrid

Assembly: DevExpress.XtraPivotGrid.v21.1.dll

Declaration

public event PivotCellEventHandler CellDoubleClick

Event Data

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

Property Description
Bounds Gets the cell’s bounds.
ColumnCustomTotal Gets the column custom total which displays the current cell.
ColumnField Gets the innermost column field which corresponds to the processed cell.
ColumnFieldIndex For internal use.
ColumnIndex Gets the visual index of the column that contains the processed cell.
ColumnValueType Gets the type of column which contains the processed cell.
DataField Gets the data field which identifies the column where the processed cell resides.
DisplayText Gets the display text of the cell currently being processed.
Focused Gets whether the processed cell is the focused cell.
RowCustomTotal Gets the row custom total which contains the current cell.
RowField Gets the innermost row field which corresponds to the processed cell.
RowFieldIndex For internal use.
RowIndex Gets the index of the row that contains the processed cell.
RowValueType Gets the type of row which contains the processed cell.
Selected Gets whether the processed cell is selected.
SummaryType Gets the summary type of the currently processed value.
SummaryValue Gets the summary value currently being processed.
Value Gets the processed cell’s value.

The event data class exposes the following methods:

Method Description
CreateDrillDownDataSource() Returns data records used to calculate a summary value for the cell.
CreateDrillDownDataSource(List<String>) Returns data records used to calculate a summary value for the current cell. Allows you to specify the columns to return.
CreateDrillDownDataSource(Int32) Returns data records used to calculate a summary value for the current cell. Allows you to specify the columns and limit the number of records to return.
CreateDrillDownDataSource(Int32, List<String>) Returns data records used to calculate a summary value for the current cell. Allows you to specify the columns and limit the number of records to return.
CreateDrillDownDataSourceAsync()
CreateDrillDownDataSourceAsync(List<String>)
CreateDrillDownDataSourceAsync(Int32)
CreateDrillDownDataSourceAsync(Int32, List<String>)
CreateOLAPDrillDownDataSource(List<String>) Obsolete. In OLAP mode, returns a list of records used to calculate a summary value for the current cell. Allows you to specify the columns to be returned.
CreateOLAPDrillDownDataSource(Int32, List<String>) Obsolete. In OLAP mode, returns a list of records used to calculate a summary value for the current cell. Allows you to specify the columns and limit the number of records to be returned.
CreateServerModeDrillDownDataSource(List<String>) Obsolete. In server mode, returns a list of records used to calculate a summary value for the current cell. Allows you to specify the columns to be returned.
CreateServerModeDrillDownDataSource(Int32, List<String>) Obsolete. In server mode, returns a list of records used to calculate a summary value for the current cell. Allows you to specify the columns and limit the number of records to be returned.
CreateSummaryDataSource() Returns a summary data source.
GetCellValue(TField) Returns a cell value calculated against the specified data field.
GetCellValue(Int32, Int32) Returns a cell value by the column and row indexes.
GetCellValue(Object[], Object[], TField) Returns a cell value calculated for the specified column and row field values, against the specified data field.
GetColumnFields() Returns an array of column fields which correspond to the current cell.
GetColumnGrandTotal(TField) Returns a Column Grand Total value calculated for the current row field values, against the specified data field.
GetColumnGrandTotal(Object[], TField) Returns a Column Grand Total value calculated for the specified row field values, against the specified data field.
GetFieldValue(TField) Returns the value of the specified column or row field which identifies the column/row in which the processed cell resides.
GetFieldValue(TField, Int32) Returns the specified column or row field’s value for the cell, addressed by its zero-based index in the data area.
GetGrandTotal(TField) Gets the Grand Total value for the specified field.
GetNextColumnCellValue(TField) Returns the value of the cell in the same row but in the next column.
GetNextRowCellValue(TField) Returns the value of the cell in the next row.
GetPrevColumnCellValue(TField) Returns the value of the cell in the same row but in the previous column.
GetPrevRowCellValue(TField) Returns the value of the cell in the previous row.
GetRowFields() Returns an array of the row fields which correspond to the current cell.
GetRowGrandTotal(TField) Returns a Row Grand Total value calculated for the current column field values, against the specified data field.
GetRowGrandTotal(Object[], TField) Returns a Row Grand Total value calculated for the specified column field values, against the specified data field.
IsFieldValueExpanded(TField) Indicates whether the specified field’s value that represents the row or column header of the processed cell is expanded.
IsFieldValueRetrievable(TField) Gets whether the value of the specified column or row field can be retrieved for the current cell by the PivotCellEventArgsBase<TField, TData, TCustomTotal>.GetFieldValue method.
IsOthersFieldValue(TField) Indicates whether the processed data cell resides within the “Others” row/column when the Top X Value feature is enabled.

Remarks

This event occurs when the user double-clicks a cell in the Data Area. Use event data to identify the cell location, data field, whether the cell is selected or focused.

Example

This example demonstrates how to obtain the records from the control’s underlying data source for a particular cell. Double-click a cell to invoke a form that contains a grid to show the underlying data.

NOTE

The complete sample project How to: Display Underlying (Drill-Down) Records is available in the DevExpress Examples repository.

The primary data source is the Northwind database contained in the SQL Server data file NW.mdf. The application can use the BindingSource component or the LinqServerModeDataSource instance to retrieve the data from the database. A LinqServerModeDataSource data source is a queryable data source, and it forces the PivotGrid to operate in server mode. Click the Server Mode toggle switch control to switch from one data source to another.

When you double-click the PivotGrid cell, the PivotGridControl.CellDoubleClick event occurs. The following CreateDrillDownDataSource method overrides are called to obtain the list of records associated with the selected cell:

You can also click the Get Grand Total Data button to call the PivotGridControl.CreateDrillDownDataSource method and display all data records that the PivotGridControl uses to show the summarized data.

screenshot

using DevExpress.XtraEditors;
using DevExpress.XtraGrid;
using DevExpress.XtraGrid.Views.Grid;
using DevExpress.XtraPivotGrid;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;

namespace DrillDownDataSourceExample
{
    public partial class Form1 : DevExpress.XtraEditors.XtraForm
    {
        bool serverMode = false;
        public Form1()
        {
            InitializeComponent();
            pivotGridControl1.CellDoubleClick += PivotGridControl1_CellDoubleClick;
            // This line of code is generated by Data Source Configuration Wizard
            linqServerModeSource1.QueryableSource = new DrillDownDataSourceExample.DataClasses1DataContext().Invoices;
        }

        private void PivotGridControl1_CellDoubleClick(object sender, DevExpress.XtraPivotGrid.PivotCellEventArgs e)
        {
            PivotDrillDownDataSource drillDownDataSource;
            if (serverMode)
               drillDownDataSource = e.CreateDrillDownDataSource(25, new List<string> { "ShipName" });
            else
                drillDownDataSource = e.CreateDrillDownDataSource(25);
            XtraForm dataform = CreateDrillDownForm(drillDownDataSource);
            dataform.ShowDialog();
            dataform.Dispose();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            // TODO: This line of code loads data into the 'nWDataSet.Invoices' table. You can move, or remove it, as needed.
            this.invoicesTableAdapter.Fill(this.nWDataSet.Invoices);
            SetPivotGridDataSource();
        }

        private XtraForm CreateDrillDownForm(PivotDrillDownDataSource dataSource) {
            XtraForm form = new XtraForm();
            GridControl grid = new GridControl();
            grid.Parent = form;
            grid.Dock = DockStyle.Fill;
            grid.DataSource = dataSource;
            grid.DataSource =
            form.Bounds = new Rectangle(100, 100, 800, 400);
            GridView gridView1 = new GridView();
            grid.MainView = gridView1;
            gridView1.Columns["OrderDate"].DisplayFormat.FormatType = DevExpress.Utils.FormatType.DateTime;
            form.Text = string.Format("Underlying Data - {0} Records", dataSource.RowCount);
            return form;
        }

        private void toggleSwitch1_Toggled(object sender, EventArgs e)
        {
            serverMode = ((ToggleSwitch)sender).IsOn;
            SetPivotGridDataSource();
        }

        private void SetPivotGridDataSource()
        {
            if (serverMode)
                pivotGridControl1.DataSource = linqServerModeSource1;
            else
                pivotGridControl1.DataSource = invoicesBindingSource;
        }

        private void btnGrandTotal_Click(object sender, EventArgs e)
        {
            PivotDrillDownDataSource drillDownDataSource = pivotGridControl1.CreateDrillDownDataSource();
            Form dataform = CreateDrillDownForm(drillDownDataSource);
            dataform.ShowDialog();
            dataform.Dispose();
        }
    }
}
See Also