Skip to main content
All docs
V25.1
  • Custom Functions in the Expression Editor (ASP.NET Web Forms)

    • 2 minutes to read

    This topic describes how to add a custom function to the Expression Editor or remove a function from the list of available functions.

    Add a Custom Function

    Implement a Custom Function

    To create a custom function, create an object that descends from the ReportCustomFunctionOperatorBase abstract class.

    The following code defines a custom function CustomFormatFunction(string format, object arg0):

    using DevExpress.XtraReports.Expressions;
    using System;
    
        public class CustomFormatFunction : ReportCustomFunctionOperatorBase
        {
            public override string FunctionCategory
                => "Custom";
            public override string Description
                => "CustomFormatFunction(string format, object arg0)" +
                "\r\nConverts an arg0 value to a string based on a specified format";
            public override bool IsValidOperandCount(int count)
                => count == 2;
            public override bool IsValidOperandType(int operandIndex, int operandCount, Type type)
                => true;
            public override int MaxOperandCount
                => 2;
            public override int MinOperandCount
                => 2;
            public override object Evaluate(params object[] operands)
            {
                string res = String.Format(operands[0].ToString(), operands[1]);
                return res;
            }
            public override string Name
                => "CustomFormatFunction";
            public override Type ResultType(params Type[] operands)
            {
                return typeof(string);
            }
        }
    

    Register a Function

    Call the CustomFunctions.Register method at application startup:

    void Application_Start(object sender, EventArgs e) {
        // ...
        DevExpress.XtraReports.Expressions.CustomFunctions.Register(new CustomFormatFunction());
    }
    

    Result

    The following image shows a custom function (CustomFormatFunction) in the list of available functions in the Expression Editor:

    Expression Editor - Web Report Designer - Custom Function

    Remove a Function from the List of Available Functions

    Handle the BeforeRender event and remove a function from the DevExpress.Reporting.Designer.Widgets.reportFunctionDisplay collection. To get access to a function, use the following notation where index is a function category index:

    DevExpress.Reporting.Designer.Widgets.reportFunctionDisplay[index].items["function_name"]
    

    The following code sample removes the LocalDateTimeThisYear function from the DateTime category:

    <script type="text/javascript">
        function OnBeforeRender(event) {
            delete DevExpress.Reporting.Designer.Widgets.reportFunctionDisplay[1].items["LocalDateTimeThisYear"];
        }
    </script>
    <dx:ASPxReportDesigner EnableRichTextEditor="False" ID="ASPxReportDesigner1" runat="server">
        <ClientSideEvents BeforeRender="OnBeforeRender"/>
    </dx:ASPxReportDesigner>
    

    Unregister a Function

    If you remove a function from the DevExpress.Reporting.Designer.Widgets.reportFunctionDisplay collection on the client, the function is still registered and expressions with that function remain valid and can be evaluated. You can type the function name and compose a new expression manually.

    If you have registered a custom function, you can call the CustomFunctions.Unregister method at application startup to unregister it:

    DevExpress.XtraReports.Expressions.CustomFunctions.Unregister("CustomFormatFunction");
    

    After this code is executed, the CustomFormatFunction function is not available in the Expression Editor and won’t be evaluated in expressions.