IChartDataAdapter.GetNumericalValue(Int32, ChartDataMemberType) Method
Returns a data item’s numeric value for a data member of the specified type by the index.
Namespace: DevExpress.XtraCharts
Assembly: DevExpress.XtraCharts.v24.2.dll
Declaration
Parameters
Name | Type | Description |
---|---|---|
index | Int32 | A zero-based integer that specifies the item’s position within the collection. If the passed index is negative or exceeds the last available index, an exception is raised. |
dataMember | ChartDataMemberType | The data member type. |
Returns
Type | Description |
---|---|
Double | The numeric data item value. |
Example
How to: Implement a Custom Chart Data Adapter
This example shows how to create an adapter that loads numeric data to the chart:
using DevExpress.XtraCharts;
using System;
using System.Collections.Generic;
using System.Windows.Forms;
namespace CustomDataAdapter {
public partial class Form1 : Form {
const long DataItemCount = 100000;
const int MaxValue = 100;
const int MinValue = 80;
Random rand = new Random();
public Form1() {
InitializeComponent();
Series series = new Series("Series", ViewType.Line);
chartControl1.Series.Add(series);
List<DataItem> dataItems = new List<DataItem>();
for (int i = 0; i < DataItemCount; i++) {
dataItems.Add(new DataItem(i, rand.NextDouble() * (MaxValue - MinValue) + MaxValue));
}
series.DataAdapter = new CustomNumericDataAdapter(dataItems);
((XYDiagram)chartControl1.Diagram).AxisY.WholeRange.AlwaysShowZeroLevel = false;
}
}
public class DataItem {
public double Argument { get; }
public double Value { get; }
public DataItem(double argument, double value) {
Argument = argument;
Value = value;
}
}
public class CustomNumericDataAdapter : ISeriesAdapter {
readonly IList<DataItem> items;
public bool DataSorted => true;
public int ItemsCount => this.items.Count;
public CustomNumericDataAdapter(IList<DataItem> items) {
this.items = items;
}
event NotifyChartDataChangedEventHandler IChartDataAdapter.DataChanged {
add { }
remove { }
}
public object Clone() {
return this;
}
public double GetNumericalValue(int index, ChartDataMemberType dataMember) {
switch (dataMember) {
case ChartDataMemberType.Argument: return items[index].Argument;
case ChartDataMemberType.Value: return items[index].Value;
}
return double.NaN;
}
public object GetSourceObject(int index) {
return this.items[index];
}
public ActualScaleType GetScaleType(ChartDataMemberType dataMember) {
return ActualScaleType.Numerical;
}
public DateTime GetDateTimeValue(int index, ChartDataMemberType dataMember) {
throw new NotImplementedException();
}
public string GetQualitativeValue(int index, ChartDataMemberType dataMember) {
throw new NotImplementedException();
}
public TimeSpan GetTimeSpanValue(int index, ChartDataMemberType dataMember) {
throw new NotImplementedException();
}
public object GetObjectValue(int index, ChartDataMemberType dataMember) {
throw new NotImplementedException();
}
}
}
See Also