Back to Devexpress

ChartCalculatedField.Expression Property

corelibraries-devexpress-dot-xtracharts-dot-chartcalculatedfield.md

latest6.2 KB
Original Source

ChartCalculatedField.Expression Property

Gets or sets an expression the calculated field uses to evaluate its values.

Namespace : DevExpress.XtraCharts

Assembly : DevExpress.XtraCharts.v25.2.dll

NuGet Package : DevExpress.Charts

Declaration

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

Property Value

TypeDescription
String

A string that represents an expression written in Criteria Language.

|

Remarks

An expression is a string that, when parsed and processed, evaluates a value. Expressions can consist of column/field names in brackets, constants, operators, and functions. For information on expression syntax, refer to Criteria Language Syntax.

You can use the Expression Editor to create expressions at design time or specify expressions in code at runtime.

Example

The following example shows how to create a calculated field and then use this field as a data source for a series. The field’s values are calculated by the following expression: [Time.Seconds] * [Velocity].

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

namespace CalculatedFieldExample {
    public partial class Form1 : Form {
        //...
        private void Form1_Load(object sender, EventArgs e) {
            chartControl1.DataSource = GetDataPoints();

            ChartCalculatedField calcField = new ChartCalculatedField();
            calcField.Expression = "[Time.Seconds] * [Velocity]";
            calcField.FieldType = ChartCalculatedFieldType.Double;
            calcField.Name = "Displacement";
            chartControl1.CalculatedFields.Add(calcField);

            Series series = new Series("series", ViewType.Line);
            series.ArgumentDataMember = "Time";
            series.ValueDataMembers.AddRange("Displacement");
            chartControl1.Series.Add(series);
            XYDiagram diagram = chartControl1.Diagram as XYDiagram;
            diagram.AxisX.TimeSpanScaleOptions.MeasureUnit = TimeSpanMeasureUnit.Second;
            diagram.AxisY.WholeRange.AlwaysShowZeroLevel = false;
        }
        public List<DataPoint> GetDataPoints() {
            List<DataPoint> dataPoints = new List<DataPoint>() {
                new DataPoint (new TimeSpan(0, 0, 0), 10),
                new DataPoint (new TimeSpan(0, 0, 1), 11.46),
                new DataPoint (new TimeSpan(0, 0, 2), 11.90),
                //...
                // Other data points here.
                // ...
                new DataPoint (new TimeSpan(0, 0, 12), 15.756)
            };
            return dataPoints;
        }
    }
    public class DataPoint {
        public TimeSpan Time { get; set; }
        public double Velocity { get; set; }
        public DataPoint(TimeSpan time, double velocity) {
            this.Time = time;
            this.Velocity = velocity;
        }
    }
}
vb
Imports DevExpress.XtraCharts
Imports System
Imports System.Collections.Generic
Imports System.Windows.Forms

Namespace CalculatedFieldExample
    Public Partial Class Form1
        Inherits Form
        '...
        Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs)
            chartControl1.DataSource = GetDataPoints()

            Dim calcField As ChartCalculatedField = New ChartCalculatedField()
            calcField.Expression = "[Time.Seconds] * [Velocity]"
            calcField.FieldType = ChartCalculatedFieldType.[Double]
            calcField.Name = "Displacement"
            chartControl1.CalculatedFields.Add(calcField)

            Dim series As Series = New Series("series", ViewType.Line)
            series.ArgumentDataMember = "Time"
            series.ValueDataMembers.AddRange("Displacement")
            chartControl1.Series.Add(series)
            Dim diagram As XYDiagram = TryCast(chartControl1.Diagram, XYDiagram)
            diagram.AxisX.TimeSpanScaleOptions.MeasureUnit = TimeSpanMeasureUnit.Second
            diagram.AxisY.WholeRange.AlwaysShowZeroLevel = False
        End Sub
        Public Function GetDataPoints() As List(Of DataPoint)
            Dim dataPoints As List(Of DataPoint) = New List(Of DataPoint)() From {
                New DataPoint(New TimeSpan(0, 0, 0), 10),
                New DataPoint(New TimeSpan(0, 0, 1), 11.46),
                New DataPoint(New TimeSpan(0, 0, 2), 11.90),
                '...
                ' Other data points here.
                '...
                New DataPoint(New TimeSpan(0, 0, 12), 15.756)
            }
            Return dataPoints
        End Function
    End Class
    Public Class DataPoint
        Public Property Time As TimeSpan
        Public Property Velocity As Double
        Public Sub New(ByVal time As TimeSpan, ByVal velocity As Double)
            Me.Time = time
            Me.Velocity = velocity
        End Sub
    End Class
End Namespace

See Also

ChartCalculatedField Class

ChartCalculatedField Members

DevExpress.XtraCharts Namespace