CalculatedField Class

Namespace: DevExpress.XtraReports.UI

Assembly: DevExpress.XtraReports.v18.1.dll

Syntax

public class CalculatedField :
    DataContainerComponent,
    IDataContainer,
    IDataContainerBase,
    IDataContainerBase2,
    IXtraSupportShouldSerialize,
    IScriptable,
    IDisplayNamePropertyContainer,
    ICalculatedField

Calculated fields are accessed via the XtraReport.CalculatedFields property of a report. A value of a calculated field is obtained by evaluating its expression, represented by its CalculatedField.Expression property's text. Both at design time within Visual Studio and in the End-User Designer, an expression of virtually any level of complexity can be easily constructed using the Expression Editor.

CalculatedField_ExpressionEditor

This expression can be built upon data fields (which are obtained from the data table defined by the CalculatedField.DataSource and CalculatedField.DataMember property values), report parameters, and different date-time, logical, math and string functions surrounding them. For a complete list of these functions, refer to Expressions.

A calculated field's expression can evaluate values of other calculated fields if you avoid circular references.

Note

When creating calculated fields, avoid dots in their names, because XtraReports uses them to address data source members.

To learn more, refer to Calculated Fields Overview. And, for an example on how to use calculated fields in a report, refer to the Using Calculated Fields tutorial.

Examples

This example demonstrates how a calculated field can be created at runtime and bound to a control's XRControl.Text property.

using System;
using System.Windows.Forms;
using DevExpress.XtraReports.UI;
using DevExpress.XtraReports.Configuration;
// ...

private void button1_Click(object sender, EventArgs e) {

    // Create a report.
    XtraReport1 report = new XtraReport1();

    // Create a calculated field 
    // and add it to the report's collection.
    CalculatedField calcField = new CalculatedField();
    report.CalculatedFields.Add(calcField);

    // Define the calculated field's properties.
    calcField.DataSource = report.DataSource;
    calcField.DataMember = report.DataMember;
    calcField.FieldType = FieldType.Double;
    calcField.DisplayName = "Calculated Field";
    calcField.Name = "myField";
    calcField.Expression = "[UnitPrice] * [UnitsInStock]";

    // Bind a label's Text property to the calculated field.
    report.FindControl("xrlabel2", true).DataBindings.Add("Text", null, "Order Details.myField");

    // Bind a label's Text property to the calculated field 
    // depending on the report's data binding mode.
    if (Settings.Default.UserDesignerOptions.DataBindingMode == DataBindingMode.Bindings)
        report.FindControl("xrlabel3", true).DataBindings.Add("Text", null, "Products.myField", "{0:c2}");
    else report.FindControl("xrlabel3", true).ExpressionBindings.Add(
        new ExpressionBinding("BeforePrint", "Text", "FormatString('{0:c2}', [myField])"));

    // Display the report.
    ReportPrintTool printTool = new ReportPrintTool(report);
    printTool.ShowPreviewDialog();
}

Inheritance

Object
DevExpress.XtraReports.UI.DataContainerComponent
CalculatedField

Implements

DevExpress.Data.IDataContainerBase
DevExpress.Data.IDataContainerBase2
DevExpress.Utils.Serializing.Helpers.IXtraSupportShouldSerialize

See Also