Back to Devexpress

Series.DataAdapter Property

corelibraries-devexpress-dot-xtracharts-dot-series-7d4dbeea.md

latest9.8 KB
Original Source

Series.DataAdapter Property

Gets or sets an adapter that loads data from a source to the series.

Namespace : DevExpress.XtraCharts

Assembly : DevExpress.XtraCharts.v25.2.dll

NuGet Package : DevExpress.Charts

Declaration

csharp
[XtraChartsLocalizableCategory(XtraChartsCategory.Data)]
public ISeriesAdapter DataAdapter { get; set; }
vb
<XtraChartsLocalizableCategory(XtraChartsCategory.Data)>
Public Property DataAdapter As ISeriesAdapter

Property Value

TypeDescription
ISeriesAdapter

A data adapter that is an object of a class that implements the ISeriesAdapter interface.

|

Remarks

You can use the following predefined data adapters to specify the Series.DataAdapter property:

Example

This example shows how to create a series that requires one value per argument and populate it with data.

csharp
using DevExpress.Utils;
using DevExpress.XtraCharts;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;

namespace ChartDataAdapters {
    public partial class Form1 : Form {
        readonly TemperatureData temperatureData = new TemperatureData(new Random(9));
        public Form1() {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e) {
            // Create a series.
            Series series = new Series("Temperature", ViewType.Spline);

            // Create a data adapter.
            DataSourceAdapter dataAdapter = new DataSourceAdapter();

            // Specify the data source.
            dataAdapter.DataSource = temperatureData.Points;

            // Create a data member that defines arguments.
            dataAdapter.DataMembers.Add(new DataMember {
                DataMemberType = ChartDataMemberType.Argument,
                ColumnName = "TimeStamp",
                ScaleType = ScaleType.TimeSpan
            });
            // Create a data member that defines values.
            dataAdapter.DataMembers.Add(new DataMember {
                DataMemberType = ChartDataMemberType.Value,
                ColumnName = "Temperature",
                ScaleType = ScaleType.Numerical
            });

            // Assign the data adapter to the series.
            series.DataAdapter = dataAdapter;
        }
    }
    class TemperatureData {
        const int PointsCount = 250;
        readonly TemperaturePoint maxTemperaturePoint = new TemperaturePoint(TimeSpan.Zero, double.MinValue);
        readonly TemperaturePoint minTemperaturePoint = new TemperaturePoint(TimeSpan.MaxValue, double.MaxValue);
        readonly List<TemperaturePoint> points = new List<TemperaturePoint>(PointsCount);
        internal TemperaturePoint MaxTemperaturePoint {
            get { return maxTemperaturePoint; }
        }
        internal TemperaturePoint MinTemperaturePoint {
            get { return minTemperaturePoint; }
        }
        internal double OptimalTemperature {
            get { return 53; }
        }
        internal List<TemperaturePoint> Points {
            get { return points; }
        }
        internal TemperatureData(Random random) {
            double preTemperature = 50;
            for (int i = 0; i < PointsCount; i++) {
                TimeSpan time = TimeSpan.FromSeconds(i);
                double temperature = preTemperature + (random.NextDouble() - 0.5) * 10;
                if (temperature > 90)
                    temperature -= 20;
                if (temperature < 20)
                    temperature += 10;
                TemperaturePoint temperaturePoint = new TemperaturePoint(time, temperature);
                if (temperature < minTemperaturePoint.Temperature)
                    minTemperaturePoint = temperaturePoint;
                if (temperature > maxTemperaturePoint.Temperature)
                    maxTemperaturePoint = temperaturePoint;
                points.Add(temperaturePoint);
                preTemperature = temperature;
            }
        }
    }
    public class TemperaturePoint {
        public TimeSpan TimeStamp { get; private set; }
        public double Temperature { get; private set; }

        internal TemperaturePoint(TimeSpan time, double temperature) {
            this.TimeStamp = time;
            this.Temperature = temperature;
        }
    }
}
vb
Imports DevExpress.Utils
Imports DevExpress.XtraCharts
Imports System
Imports System.Collections.Generic
Imports System.Windows.Forms

Namespace ChartDataAdapters
    Public Partial Class Form1
        Inherits Form

        Private ReadOnly temperatureData As TemperatureData = New TemperatureData(New Random(9))

        Public Sub New()
            InitializeComponent()
        End Sub

        Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs)
            ' Create a series.
            Dim series As Series = New Series("Temperature", ViewType.Spline)

            ' Create a data adapter.
            Dim dataAdapter As DataSourceAdapter = New DataSourceAdapter()

            ' Specify the data source.
            dataAdapter.DataSource = temperatureData.Points

            ' Create a data member that defines arguments.
            dataAdapter.DataMembers.Add(New DataMember With {
                .DataMemberType = ChartDataMemberType.Argument,
                .ColumnName = "TimeStamp",
                .ScaleType = ScaleType.TimeSpan
            })
            ' Create a data member that defines values.
            dataAdapter.DataMembers.Add(New DataMember With {
                .DataMemberType = ChartDataMemberType.Value,
                .ColumnName = "Temperature",
                .ScaleType = ScaleType.Numerical
            })

            ' Assign the data adapter to the series.
            series.DataAdapter = dataAdapter
        End Sub
    End Class

    Friend Class TemperatureData
        Const PointsCount As Integer = 250
        Private ReadOnly maxTemperaturePointField As TemperaturePoint = New TemperaturePoint(TimeSpan.Zero, Double.MinValue)
        Private ReadOnly minTemperaturePointField As TemperaturePoint = New TemperaturePoint(TimeSpan.MaxValue, Double.MaxValue)
        Private ReadOnly pointsField As List(Of TemperaturePoint) = New List(Of TemperaturePoint)(PointsCount)

        Friend ReadOnly Property MaxTemperaturePoint As TemperaturePoint
            Get
                Return maxTemperaturePointField
            End Get
        End Property

        Friend ReadOnly Property MinTemperaturePoint As TemperaturePoint
            Get
                Return minTemperaturePointField
            End Get
        End Property

        Friend ReadOnly Property OptimalTemperature As Double
            Get
                Return 53
            End Get
        End Property

        Friend ReadOnly Property Points As List(Of TemperaturePoint)
            Get
                Return pointsField
            End Get
        End Property

        Friend Sub New(ByVal random As Random)
            Dim preTemperature As Double = 50

            For i As Integer = 0 To PointsCount - 1
                Dim time As TimeSpan = TimeSpan.FromSeconds(i)
                Dim temperature As Double = preTemperature + (random.NextDouble() - 0.5) * 10
                If temperature > 90 Then temperature -= 20
                If temperature < 20 Then temperature += 10
                Dim temperaturePoint As TemperaturePoint = New TemperaturePoint(time, temperature)
                If temperature < minTemperaturePointField.Temperature Then minTemperaturePointField = temperaturePoint
                If temperature > maxTemperaturePointField.Temperature Then maxTemperaturePointField = temperaturePoint
                pointsField.Add(temperaturePoint)
                preTemperature = temperature
            Next
        End Sub
    End Class

    Public Class TemperaturePoint
        Private _TimeStamp As System.TimeSpan, _Temperature As Double

        Public Property TimeStamp As TimeSpan
            Get
                Return _TimeStamp
            End Get
            Private Set(ByVal value As TimeSpan)
                _TimeStamp = value
            End Set
        End Property

        Public Property Temperature As Double
            Get
                Return _Temperature
            End Get
            Private Set(ByVal value As Double)
                _Temperature = value
            End Set
        End Property

        Friend Sub New(ByVal time As TimeSpan, ByVal temperature As Double)
            TimeStamp = time
            Me.Temperature = temperature
        End Sub
    End Class
End Namespace

See Also

Series Class

Series Members

DevExpress.XtraCharts Namespace