Skip to main content
All docs
V25.1
  • CustomControlProviderBase Class

    A base class that contains configuration settings for a custom control.

    Namespace: DevExpress.DashboardWin

    Assembly: DevExpress.Dashboard.v25.1.Win.dll

    NuGet Package: DevExpress.Win.Dashboard

    Declaration

    public abstract class CustomControlProviderBase :
        ICustomControlProvider,
        ICustomExportControlProvider

    Remarks

    A custom control displays a custom item in a dashboard. To configure the custom control, derive a class from CustomControlProviderBase. The class creates and updates the control based on data that a dashboard transfers to it.

    The sections below illustrate how to implement a custom control:

    Create a Custom Control

    The CustomControlProviderBase.Control property gets the control displayed in a custom item.

    The following code snippet derives a CustomFunnelControlProvider class from CustomControlProviderBase:

    using System.Windows.Forms;
    using DevExpress.DashboardCommon;
    using DevExpress.DashboardWin;
    using DevExpress.XtraCharts;
    //...
    public class CustomFunnelControlProvider : CustomControlProviderBase{
        CustomDashboardItem<CustomFunnelMetadata> dashboardItem;
        ChartControl chart;
        protected override Control Control { get { return chart; } }
    
        public CustomFunnelControlProvider(CustomDashboardItem<CustomFunnelMetadata> dashboardItem) {
            this.dashboardItem = dashboardItem;
            chart = new ChartControl();
        }
    }
    

    Update a Custom Control

    The CustomControlProviderBase.UpdateControl(CustomItemData) method is called each time a custom item’s data or settings change. The method supplies data for a custom item based on measures and dimensions that are specified in metadata.

    You can use one of the following ways to bind a control to data:

    MultiDimensionalData
    Use MultiDimensionalData if a custom control does not support data sources that implement IList. You can create a data source based on MultiDimensionalData for the control. Call the CustomItemData.GetMultiDimensionalData() method to get MultiDimensionalData.
    DashboardFlatDataSource
    Use DashboardFlatDataSource if a custom control supports a data source that implements IList. Call the CustomItemData.GetFlatData(DashboardFlatDataSourceOptions) method to get custom item data and bind it to a control.

    The following code snippet binds data to a custom control:

    using System.Windows.Forms;
    using DevExpress.DashboardCommon;
    using DevExpress.DashboardWin;
    using DevExpress.XtraCharts;
    
    public class CustomFunnelControlProvider : CustomControlProviderBase {
      CustomDashboardItem<CustomFunnelMetadata> dashboardItem;
      //...
      protected override void UpdateControl(CustomItemData customItemData){
        chart.Series.Clear();
        if(dashboardItem.Metadata.Value != null && dashboardItem.Metadata.Arguments.Count > 0) {
          Series series = new Series("A Funnel Series", ViewType.Funnel);
          flatData = customItemData.GetFlatData(new DashboardFlatDataSourceOptions() {
              AddColoringColumns = true });
          series.DataSource = flatData;
          series.ValueDataMembers.AddRange(dashboardItem.Metadata.Value.UniqueId);
          series.ArgumentDataMember = dashboardItem.Metadata.Arguments.Last().UniqueId;
          series.ColorDataMember = flatData.GetColoringColumn(dashboardItem.Metadata.Value.UniqueId).Name;
          chart.Series.Add(series);
        }
      }
    }
    

    Once you have configured a custom control and bound it to data, you need to visualize the control. To accomplish this, assign a CustomControlProviderBase derived class to the CustomDashboardItemControlCreatingEventArgs.CustomControlProvider property.

    Inheritance

    Object
    CustomControlProviderBase
    See Also