dashboard-devexpress-dot-dashboardcommon-dot-viewerdata.md
Represents multidimensional data visualized in the dashboard item.
Namespace : DevExpress.DashboardCommon.ViewerData
Assembly : DevExpress.Dashboard.v25.2.Core.dll
NuGet Package : DevExpress.Dashboard.Core
public class MultiDimensionalData
Public Class MultiDimensionalData
The following members return MultiDimensionalData objects:
Show 22 links
The MultiDimensionalData object is used to hold hierarchical data displayed within the dashboard item in a unified way. The dimension value corresponding to a specific hierarchy level is stored in the AxisPoint class that defines a point in a multidimensional space. Such points are placed on a specific data axis that is represented by the DataAxis class. For instance, the pivot grid has the “Row” and “Column” axes, the chart has the “Argument” and “Series” axes, etc. The DashboardDataAxisNames class provides access to names that allow you to identify various types of data axes.
The MultiDimensionalData class provides the following members to access the displayed data.
To learn more, see the Obtaining Underlying and Displayed Data topic.
The following example demonstrates how to obtain client data corresponding to a particular visual element using DashboardViewer‘s API.
In this example, the DashboardViewer.DashboardItemClick event is handled to obtain client data for the Card dashboard item and display this data in a Chart control.
When a user clicks a card, the app obtains axis points placed on the “Sparkline” axis, determines corresponding actual/target values, and saves these values to a data table. This table is used as a data source for the Chart control.
The Pie dashboard item demonstrates the master filtering feature. Click the slice and the Cards will display client data by the selected year.
View Example: How to obtain a dashboard item's client data in the WinForms Viewer
using System;
using System.Data;
using System.Drawing;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using DevExpress.DashboardWin;
using DevExpress.DashboardCommon;
using DevExpress.XtraCharts;
using DevExpress.DashboardCommon.ViewerData;
namespace Dashboard_ClientDataCards_Win {
public partial class Form1 : XtraForm {
public Form1() {
InitializeComponent();
dashboardViewer1.DashboardItemClick += dashboardViewer1_DashboardItemClick;
}
// Handles the DashboardViewer.DashboardItemClick event.
private void dashboardViewer1_DashboardItemClick(object sender,
DashboardItemMouseActionEventArgs e) {
if (e.DashboardItemName == "cardDashboardItem1" & e.GetAxisPoint() != null) {
// Obtains client data related to the clicked card.
MultiDimensionalData clickedItemData = e.Data.GetSlice(e.GetAxisPoint());
DeltaDescriptor delta = e.GetDeltas()[0];
// Creates a data table that will be used to hold client data.
DataTable dataSource = new DataTable();
dataSource.Columns.Add("Argument", typeof(DateTime));
dataSource.Columns.Add("Actual", typeof(double));
dataSource.Columns.Add("Target", typeof(double));
// Saves values of axis points placed on the "sparkline" axis and corresponding
// actual/target values to the data table.
foreach (AxisPoint point in
clickedItemData.GetAxisPoints(DashboardDataAxisNames.SparklineAxis)) {
DataRow row = dataSource.NewRow();
DeltaValue deltaValue = clickedItemData.GetSlice(point).GetDeltaValue(delta);
if (deltaValue.ActualValue.Value != null &&
deltaValue.TargetValue.Value != null) {
row["Argument"] = point.Value;
row["Actual"] = deltaValue.ActualValue.Value;
row["Target"] = deltaValue.TargetValue.Value;
}
else {
row["Argument"] = DBNull.Value;
row["Actual"] = DBNull.Value;
row["Target"] = DBNull.Value;
}
dataSource.Rows.Add(row);
}
DisplayDetailedChart(GetFormTitle(clickedItemData), dataSource);
}
}
// Creates a new form that is invoked on the card click and
// shows the chart displaying client data.
void DisplayDetailedChart(string title, DataTable dataSource) {
XtraForm form = new XtraForm();
form.Text = title;
form.Bounds = new Rectangle(100, 100, 700, 350);
ChartControl chart = new ChartControl();
chart.Parent = form; chart.Dock = DockStyle.Fill;
Series series1 = new Series("Actual", ViewType.SplineArea);
Series series2 = new Series("Target", ViewType.Spline);
chart.Series.AddRange(new Series[] { series1, series2 });
foreach (Series series in chart.Series) {
series.DataSource = dataSource; series.ArgumentDataMember = "Argument";
series.ValueScaleType = ScaleType.Numerical;
}
series1.ValueDataMembers.AddRange(new string[] { "Actual" });
series2.ValueDataMembers.AddRange(new string[] { "Target" });
((XYDiagram)chart.Diagram).AxisY.Label.TextPattern = "{V:$0}";
form.ShowDialog();
form.Dispose();
}
// Obtains a value of the axis point placed on the "default" axis
// to display this value in the invoked form title.
string GetFormTitle(MultiDimensionalData clickedItemData) {
AxisPoint clickedPoint =
clickedItemData.GetAxisPoints(DashboardDataAxisNames.DefaultAxis)[0];
string clickedPointValue = clickedPoint.Value.ToString();
return clickedPointValue;
}
}
}
Imports System
Imports System.Data
Imports System.Drawing
Imports System.Windows.Forms
Imports DevExpress.XtraEditors
Imports DevExpress.DashboardWin
Imports DevExpress.DashboardCommon
Imports DevExpress.XtraCharts
Imports DevExpress.DashboardCommon.ViewerData
Namespace Dashboard_ClientDataCards_Win
Partial Public Class Form1
Inherits XtraForm
Public Sub New()
InitializeComponent()
AddHandler dashboardViewer1.DashboardItemClick, AddressOf dashboardViewer1_DashboardItemClick
End Sub
' Handles the DashboardViewer.DashboardItemClick event.
Private Sub dashboardViewer1_DashboardItemClick(ByVal sender As Object, ByVal e As DashboardItemMouseActionEventArgs)
If e.DashboardItemName = "cardDashboardItem1" And e.GetAxisPoint() IsNot Nothing Then
' Obtains client data related to the clicked card.
Dim clickedItemData As MultiDimensionalData = e.Data.GetSlice(e.GetAxisPoint())
Dim delta As DeltaDescriptor = e.GetDeltas()(0)
' Creates a data table that will be used to hold client data.
Dim dataSource As New DataTable()
dataSource.Columns.Add("Argument", GetType(Date))
dataSource.Columns.Add("Actual", GetType(Double))
dataSource.Columns.Add("Target", GetType(Double))
' Saves values of axis points placed on the "sparkline" axis and corresponding
' actual/target values to the data table.
For Each point As AxisPoint In clickedItemData.GetAxisPoints(DashboardDataAxisNames.SparklineAxis)
Dim row As DataRow = dataSource.NewRow()
Dim deltaValue As DeltaValue = clickedItemData.GetSlice(point).GetDeltaValue(delta)
If deltaValue.ActualValue.Value IsNot Nothing AndAlso deltaValue.TargetValue.Value IsNot Nothing Then
row("Argument") = point.Value
row("Actual") = deltaValue.ActualValue.Value
row("Target") = deltaValue.TargetValue.Value
Else
row("Argument") = DBNull.Value
row("Actual") = DBNull.Value
row("Target") = DBNull.Value
End If
dataSource.Rows.Add(row)
Next point
DisplayDetailedChart(GetFormTitle(clickedItemData), dataSource)
End If
End Sub
' Creates a new form that is invoked on the card click and
' shows the chart displaying client data.
Private Sub DisplayDetailedChart(ByVal title As String, ByVal dataSource As DataTable)
Dim form As New XtraForm()
form.Text = title
form.Bounds = New Rectangle(100, 100, 700, 350)
Dim chart As New ChartControl()
chart.Parent = form
chart.Dock = DockStyle.Fill
Dim series1 As New Series("Actual", ViewType.SplineArea)
Dim series2 As New Series("Target", ViewType.Spline)
chart.Series.AddRange(New Series() { series1, series2 })
For Each series As Series In chart.Series
series.DataSource = dataSource
series.ArgumentDataMember = "Argument"
series.ValueScaleType = ScaleType.Numerical
Next series
series1.ValueDataMembers.AddRange(New String() { "Actual" })
series2.ValueDataMembers.AddRange(New String() { "Target" })
CType(chart.Diagram, XYDiagram).AxisY.Label.TextPattern = "{V:$0}"
form.ShowDialog()
form.Dispose()
End Sub
' Obtains a value of the axis point placed on the "default" axis
' to display this value in the invoked form title.
Private Function GetFormTitle(ByVal clickedItemData As MultiDimensionalData) As String
Dim clickedPoint As AxisPoint = clickedItemData.GetAxisPoints(DashboardDataAxisNames.DefaultAxis)(0)
Dim clickedPointValue As String = clickedPoint.Value.ToString()
Return clickedPointValue
End Function
End Class
End Namespace
Object MultiDimensionalData
See Also