All docs
V19.2
19.2
19.1
The page you are viewing does not exist in version 19.1. This link will take you to the root page.
18.2
The page you are viewing does not exist in version 18.2. This link will take you to the root page.
18.1
The page you are viewing does not exist in version 18.1. This link will take you to the root page.
17.2
The page you are viewing does not exist in version 17.2. This link will take you to the root page.

DashboardViewer.DataInspectorFormClosing Event

Occurs before the Data Inspector window closes. Allows you to access the window's grid controls.

Namespace: DevExpress.DashboardWin

Assembly: DevExpress.Dashboard.v19.2.Win.dll

Declaration

public event DataInspectorFormClosingEventHandler DataInspectorFormClosing
Public Event DataInspectorFormClosing As DataInspectorFormClosingEventHandler

Event Data

The DataInspectorFormClosing event handler receives an argument of the DataInspectorFormClosingEventArgs type. The following properties provide information specific to this event.

Property Description
AggregatedDataGrid Provides access to the Grid control that displays aggregated data in the Data Inspector dialog.
DashboardItemName Gets the name of the dashboard item for which the event is raised.
RawDataGrid Provides access to the GridControl that displays raw data in the Data Inspector dialog.

Remarks

Use the DashboardViewer.ShowDataInspector method to invoke the Data Inspector window.

When the Data Inspector window opens, the DashboardViewer.DataInspectorFormLoad event occurs.

Examples

This example illustrates how to handle the DashboardViewer.DataInspectorFormLoad and DashboardViewer.DataInspectorFormClosing events to get access to the Grid controls in the Data Inspector window and change the grid settings.

You can modify the grid layout in the Data Inspector dialog. When the dialog closes, it calls the BaseView.SaveLayoutToStream method to save settings. When the dialog opens, the BaseView.RestoreLayoutFromStream method restores the settings.

Note

The complete sample project How to Customize the Data Inspector Dialog is available in the DevExpress Examples repository.

using System.Collections.Generic;
using System.IO;
using System.Windows.Forms;
using DevExpress.DashboardWin;
using DevExpress.XtraGrid;
using DevExpress.XtraGrid.Views.Base;
using DevExpress.XtraGrid.Views.Grid;

namespace DataInspectorCustomizationExample {
    public partial class Form1 : DevExpress.XtraEditors.XtraForm
    {
        Dictionary<string, Stream> aggregatedGridLayoutDictionary = new Dictionary<string, Stream>();
        Dictionary<string, Stream> rawGridLayoutDictionary = new Dictionary<string, Stream>();
        public Form1() {
            InitializeComponent();
            dashboardViewer1.AllowInspectAggregatedData = true;
            dashboardViewer1.AllowInspectRawData = true;
            dashboardViewer1.DataInspectorFormLoad += DashboardViewer1_DataInspectorFormLoad;
            dashboardViewer1.DataInspectorFormClosing += DashboardViewer1_DataInspectorFormClosing;
        }

        private void DashboardViewer1_DataInspectorFormClosing(object sender, DataInspectorFormClosingEventArgs e) {
            SaveGridLayout(e.DashboardItemName, e.AggregatedGrid.FocusedView, aggregatedGridLayoutDictionary);
            SaveGridLayout(e.DashboardItemName, e.RawGrid.FocusedView, rawGridLayoutDictionary);
        }
        private void DashboardViewer1_DataInspectorFormLoad(object sender, DataInspectorFormLoadEventArgs e) {
            CustomizeGrid(e.AggregatedGrid);
            CustomizeGrid(e.RawGrid);

            RestoreGridLayout(e.DashboardItemName, e.AggregatedGrid.FocusedView, aggregatedGridLayoutDictionary);
            RestoreGridLayout(e.DashboardItemName, e.RawGrid.FocusedView, rawGridLayoutDictionary);
        }
        void CustomizeGrid(GridControl grid) {
            GridView view = grid.MainView as GridView;
            view.OptionsCustomization.AllowGroup = true;
            view.OptionsView.ShowGroupPanel = true;
            view.OptionsBehavior.AutoExpandAllGroups = true;
        }
        void SaveGridLayout(string itemName, BaseView gridView, Dictionary<string, Stream> layouts) {
            MemoryStream str = new MemoryStream();
            gridView.SaveLayoutToStream(str);
            layouts[itemName] = str;
            str.Seek(0, SeekOrigin.Begin);
        }
        void RestoreGridLayout(string itemName, BaseView gridView, Dictionary<string, Stream> layouts) {
            Stream stream = null;
            if(layouts.TryGetValue(itemName, out stream)) {
                gridView.RestoreLayoutFromStream(stream);
                stream.Seek(0, System.IO.SeekOrigin.Begin);
            }
        }
    }
}
See Also