corelibraries-devexpress-dot-xtracharts-dot-drilldownstatechangedeventargs-874b3f72.md
Returns the array of states that specify filtering parameters applied on each detail level.
Namespace : DevExpress.XtraCharts
Assembly : DevExpress.XtraCharts.v25.2.dll
NuGet Package : DevExpress.Charts
public DrillDownItem[] States { get; }
Public ReadOnly Property States As DrillDownItem()
| Type | Description |
|---|---|
| DrillDownItem[] |
States that specify filtering parameters applied on each detail level.
|
The following example demonstrates how to use the property to change several diagram settings taking into account the current drill down state.
chartControl.DrillDownStateChanged += this.OnChartControlDrillDownStateChanged;
chartControl.DrillDownStateChanging += this.OnChartControlDrillDownStateChanging;
private void OnChartControlDrillDownStateChanging(object sender, DrillDownStateChangingEventArgs e) {
if (e.States.Length != 0) {
object categoryValue = null;
if (e.States.Last().Parameters.TryGetValue("Category", out categoryValue)) {
int seriesIndex = chartControl.Series.IndexOf(chartControl.Series[(string)categoryValue]);
int colorIndex = seriesIndex % chartControl.PaletteRepository[chartControl.PaletteName].Count + 1;
chartControl.PaletteBaseColorNumber = colorIndex;
}
if (chartControl.Diagram is XYDiagram diagram) {
diagram.AxisX.Label.Font = new Font("Tahoma", 8.25f, FontStyle.Regular);
}
} else {
chartControl.PaletteBaseColorNumber = 0;
if (chartControl.Diagram is XYDiagram diagram) {
diagram.AxisX.Label.Font = new Font("Tahoma", 8.25f, FontStyle.Underline);
}
}
}
private void OnChartControlDrillDownStateChanged(object sender, DrillDownStateChangedEventArgs e) {
if (!(chartControl.Diagram is XYDiagram diagram)) return;
if (e.States.Length == 0) {
diagram.Rotated = true;
return;
}
diagram.Rotated = IsDrillToSeriesFromHome(e.States);
}
private bool IsDrillToSeriesFromHome(DrillDownItem[] drillDownItems) {
if (drillDownItems.Length != 1) return false;
IReadOnlyDictionary<string, object> drillDownParams = drillDownItems[0].Parameters;
if (drillDownParams.Count != 1) return false;
return drillDownParams.ContainsKey("Category");
}
AddHandler ChartControl.DrillDownStateChanging, AddressOf OnChartControlDrillDownStateChanging
AddHandler ChartControl.DrillDownStateChanged, AddressOf OnChartControlDrillDownStateChanged
Private Sub OnChartControlDrillDownStateChanging(sender As Object, e As DrillDownStateChangingEventArgs)
If (e.States.Length <> 0) Then
Dim categoryValue As Object = Nothing
If (e.States.Last().Parameters.TryGetValue("Category", categoryValue)) Then
Dim seriesIndex = ChartControl.Series.IndexOf(ChartControl.Series(CType(categoryValue, String)))
Dim colorIndex = seriesIndex Mod ChartControl.PaletteRepository(ChartControl.PaletteName).Count + 1
ChartControl.PaletteBaseColorNumber = colorIndex
End If
Dim diagram As XYDiagram = TryCast(chartControl.Diagram, XYDiagram)
If (diagram IsNot Nothing) Then
diagram.AxisX.Label.Font = New Font("Tahoma", 8.25f, FontStyle.Regular);
End If
Else
ChartControl.PaletteBaseColorNumber = 0
Dim diagram As XYDiagram = TryCast(chartControl.Diagram, XYDiagram)
If (diagram IsNot Nothing) Then
diagram.AxisX.Label.Font = New Font("Tahoma", 8.25f, FontStyle.Underline);
End If
End If
End Sub
Private Sub OnChartControlDrillDownStateChanged(sender As Object, e As DrillDownStateChangedEventArgs)
Dim diagram As XYDiagram = TryCast(chartControl.Diagram, XYDiagram)
If (diagram Is Nothing) Then Return
If (e.States.Length = 0) Then
diagram.Rotated = true
Return
End If
diagram.Rotated = IsDrillToSeriesFromHome(e.States)
End Sub
Private Function IsDrillToSeriesFromHome(drillDownItems() As DrillDownItem) As Boolean
If (drillDownItems.Length <> 1) Then Return False
Dim drillDownParams As IReadOnlyDictionary<String, Object>= drillDownItems(0).Parameters
If (drillDownParams.Count <> 1) Then Return False
Return drillDownParams.ContainsKey("Category")
End Function
The following code snippet (auto-collected from DevExpress Examples) contains a reference to the States property.
Note
The algorithm used to collect these code examples remains a work in progress. Accordingly, the links and snippets below may produce inaccurate results. If you encounter an issue with code examples below, please use the feedback form on this page to report the issue.
winforms-chart-drill-down/CS/Form1.cs#L84
}
foreach (DrillDownItem item in e.States) {
if (item.Parameters.ContainsKey("Category")) {
winforms-chart-drill-down/VB/Form1.vb#L93
For Each item As DrillDownItem In e.States
See Also
DrillDownStateChangedEventArgs Class