Back to Devexpress

DrillDownStateChangedEventArgs.States Property

corelibraries-devexpress-dot-xtracharts-dot-drilldownstatechangedeventargs-874b3f72.md

latest6.1 KB
Original Source

DrillDownStateChangedEventArgs.States Property

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

Declaration

csharp
public DrillDownItem[] States { get; }
vb
Public ReadOnly Property States As DrillDownItem()

Property Value

TypeDescription
DrillDownItem[]

States that specify filtering parameters applied on each detail level.

|

Remarks

The following example demonstrates how to use the property to change several diagram settings taking into account the current drill down state.

Example

csharp
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");
}
vb
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

csharp
}
foreach (DrillDownItem item in e.States) {
    if (item.Parameters.ContainsKey("Category")) {

winforms-chart-drill-down/VB/Form1.vb#L93

vb
For Each item As DrillDownItem In e.States

See Also

DrillDownStateChangedEventArgs Class

DrillDownStateChangedEventArgs Members

DevExpress.XtraCharts Namespace