Skip to main content

Report Designer Client-Side Configuration in an Angular Application

  • 5 minutes to read

This help topic describes how to configure the dx-report-designer component that integrates the Web Report Designer into your Angular-based application. Note that Angular Reporting components require an API backend application.

For information on how to create the Angular Single-Page Application (SPA) with an ASP.NET Core project that works as an API backend, review the following help topic: Use .NET CLI Template to Create a Reporting Angular App with Report Designer.

dx-report-designer

The following table lists dx-report-designer component options:

Option Required / Optional Description
reportUrl Required A string that specifies the initial report’s URL.
width Optional A string that defines Report Designer width. The default value is ‘100%’.
height Optional A string that defines Report Designer height. The default value is ‘700px’.
developmentMode Optional A Boolean value that enables Development mode for extended diagnostics. Review the following help topic for more information: Troubleshooting: Server-Side Libraries Version.
cssClass Optional A string that specifies the CSS class name to attach to the root div element.

dxrd-request-options

Allows you to specify where to send requests from the Report Designer.

Option Required / Optional Description
host Required A server-side project’s URI.
getDesignerModelAction Required The URI path of the controller action that returns the Report Designer model.
getLocalizationAction Optional The URI path of the controller action used to customize localization strings.

dxrd-callbacks

Allows you to specify a callback to customize the Report Designer. Callbacks correlate to client-side events at the Report Designer control level.

Tip

The tag name is dxrv-callbacks for the Viewer, dxrd-callbacks for the Designer. The name of the Designer Preview callback is the name of the Viewer callback prefixed with “Preview”:

<dx-report-designer [reportUrl]="reportUrl" height="calc(100vh - 90px)">
    <dxrd-callbacks (PreviewCustomizeExportOptions)="OnCustomizeExportOptions($event)">
    </dxrd-callbacks>
</dx-report-designer>

For a complete list of available events and details on how to use each event, refer to the following help topic: Report Designer’s Client-Side API.

Note

  • The Report Designer passes only one argument (the $event object) to callback handlers. This argument contains sender and args properties.

  • The sender object is the Report Designer’s JavaScript equivalent. It provides access to all available client-side methods.

dxrd-designer-model-settings

Allows you to specify various Report Designer settings. Review the ReportDesignerSettingsBase class description for information about available settings.

Settings in this section are passed to the controller and applied to the server-side model. You should add a parameter to the controller action method and assign the passed value to the model property.

The following code snippet specifies the AllowMDI Report Designer setting, and the UseFullscreenWizard and EnableSqlDataSource Report Wizard settings:

<dx-report-designer [reportUrl]="reportUrl" height="700px" cssClass='myDesigner'>
    <dxrd-request-options [getDesignerModelAction]="getDesignerModelAction" [host]="hostUrl"></dxrd-request-options>
    <dxrd-designer-model-settings [allowMDI]="true">
        <dxrd-wizard-settings [useFullscreenWizard]="false" [enableSqlDataSource]="false"></dxrd-wizard-settings>
    </dxrd-designer-model-settings>
</dx-report-designer>

The following code is a sample controller in the ASP.NET Core backend application. For more information, review the following help topic: Report Designer Server-Side Configuration (ASP.NET Core).

using DevExpress.AspNetCore.Reporting.QueryBuilder;
using DevExpress.AspNetCore.Reporting.QueryBuilder.Native.Services;
using DevExpress.AspNetCore.Reporting.ReportDesigner;
using DevExpress.AspNetCore.Reporting.ReportDesigner.Native.Services;
using DevExpress.AspNetCore.Reporting.WebDocumentViewer;
using DevExpress.AspNetCore.Reporting.WebDocumentViewer.Native.Services;
using DevExpress.DataAccess.Sql;
using DevExpress.XtraReports.Web.ReportDesigner.Services;
using Microsoft.AspNetCore.Mvc;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace  ServerSideAspNetCoreReportingApp.Controllers {
    public class CustomReportDesignerController : ReportDesignerController {
        public CustomReportDesignerController(IReportDesignerMvcControllerService controllerService) : base(controllerService) {
        }
        [HttpPost("[action]")]
        public async Task<IActionResult> GetDesignerModel(
            [FromForm] string reportName,
            [FromServices] IReportDesignerModelBuilder reportDesignerModelBuilder) {
            var dataSources = new Dictionary<string, object>();
            var ds = new SqlDataSource("NWindConnectionString");

            // Create a SQL query to access the Products data table.
            SelectQuery query = SelectQueryFluentBuilder.AddTable("Products").SelectAllColumnsFromTable().Build("Products");
            ds.Queries.Add(query);
            ds.RebuildResultSchema();
            dataSources.Add("Northwind", ds);

            reportName = string.IsNullOrEmpty(reportName) ? "TestReport" : reportName;
            var designerModel = await reportDesignerModelBuilder
                .Report(reportName)
                .DataSources(dataSources)
                .BuildModelAsync();

            return DesignerModel(designerModel);
        }
    }

    public class CustomQueryBuilderController : QueryBuilderController {
        public CustomQueryBuilderController(IQueryBuilderMvcControllerService controllerService) : base(controllerService) {
        }
    }

    public class CustomWebDocumentViewerController : WebDocumentViewerController {
        public CustomWebDocumentViewerController(IWebDocumentViewerMvcControllerService controllerService) : base(controllerService) {
        }
    }
}
Setting Description
allowMDI Specifies whether a user can close all reports designed in the Report Designer and leave the designer empty or leave it with only a single report.’
rightToLeft Enables a right-to-left layout in the Web Report Designer user interface.

The dxrd-designer-model-settings is a nested component that includes the settings listed below:

dxrd-data-source-settings

Allows you to hide data source actions from the Field List panel (part of the Web End-User Report Designer). Review the ReportDesignerDataSourceSettings class description for more information.

dxrd-preview-settings

Allows you to specify Report Preview settings. Review the ReportPreviewSettings class description for more information.

dxrd-wizard-settings

Specifies Report Wizard settings. Review the ReportDesignerWizardSettings class description for more information.

Usage

Start with an Angular Single-Page Application (SPA) with an ASP.NET Core backend created as described in the following help topic: Use .NET CLI Template to Create a Reporting Angular App with Report Designer.

The following code snippets demonstrate how to configure the Report Designer component in the client application:

<div>
    <button (click)="open()"><span>Open</span></button>
</div>
<div>
    <dx-report-designer [reportUrl]="reportUrl" height="700px">
        <dxrd-request-options [getDesignerModelAction]="getDesignerModelAction" [host]="hostUrl"></dxrd-request-options>
        <dxrd-callbacks (CustomizeMenuActions)="CustomizeMenuActions($event)">
        </dxrd-callbacks>
        <dxrd-designer-model-settings [allowMDI]="true">
            <dxrd-datasource-settings [allowAddDataSource]="false" [allowRemoveDataSource]="false"></dxrd-datasource-settings>
            <dxrd-preview-settings>
                <dxrv-export-settings [useSameTab]="false"></dxrv-export-settings>
                <dxrv-progressbar-settings position="TopRight"></dxrv-progressbar-settings>
                <dxrv-search-settings [useAsyncSearch]="false"></dxrv-search-settings>
            </dxrd-preview-settings>
            <dxrd-wizard-settings [useFullscreenWizard]="false" [enableSqlDataSource]="false"></dxrd-wizard-settings>
        </dxrd-designer-model-settings>
    </dx-report-designer>
</div>

Run the application to see the results:

Angular Designer Client Side Configuration Result

See Also