Back to Devexpress

DrillDownItem.Parameters Property

corelibraries-devexpress-dot-xtracharts-dot-drilldownitem.md

latest5.3 KB
Original Source

DrillDownItem.Parameters Property

Returns the field name to field value map that specifies the filter parameters that are applied to the Chart’s data source at the detail level that this item defines.

Namespace : DevExpress.XtraCharts

Assembly : DevExpress.XtraCharts.v25.2.dll

NuGet Package : DevExpress.Charts

Declaration

csharp
public ReadOnlyDictionary<string, object> Parameters { get; }
vb
Public ReadOnly Property Parameters As ReadOnlyDictionary(Of String, Object)

Property Value

TypeDescription
ReadOnlyDictionary<String, Object>

The field name to field value map that specifies the filter parameters that are applied to the Chart’s data source at the detail level that this item defines.

|

Remarks

The following example demonstrates how to use this mapping to apply several appearance changes to the Chart Control.

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

See Also

DrillDownItem Class

DrillDownItem Members

DevExpress.XtraCharts Namespace