Web Report Designer — Upcoming Features (v22.2) — Report Wizard Customization API

Reporting Team Blog
15 August 2022
The information contained within this blog post details our current/projected development plans. Please note that this information is being shared for INFORMATIONAL PURPOSES ONLY and does not represent a binding commitment on the part of Developer Express Inc. This blog post and the features/products listed within it are subject to change. You should not rely or use this information to help make a purchase decision about Developer Express Inc products.

Before I detail our upcoming enhancements to Report Wizard Customization API (v22.2), a word or two about the Report Wizard itself.

Our Report Wizard is a great way to generate clean/accurate reports. While the Report Wizard offers many benefits, it does have one drawback — the final customization of a report after completing the wizard. If an end-user needs to make small adjustments to the auto-generated report (such as report branding, formatting headers/footers, font settings), they will need to tweak report settings in our Web Report Designer.

To help address this user scenario, we expect to introduce a new customization API to the Report Wizard. When launching an application, you will be able to register your own implementation of the ReportWizardCustomizationService class. The following two methods are of interest here —  TryCreateReport and CustomizeReportOnFinish:


public class ReportWizardCustomizationService {
        public virtual bool TryCreateReport(XtraReportModel model, 
          object dataSource, string dataMember, CustomWizardData customWizardData, ref XtraReport report) {
            return false;
        }
        public virtual void CustomizeReportOnFinish(XtraReport report) { }
    }

The TryCreateReport method is called after a user has completed the Wizard. Within the method, you can create any type of report and apply all settings specified via Wizard steps. Report settings are included in the Wizard report model (passed to the method with the model parameter).

The CustomizeReportOnFinish method is called at the very end — when a user has completed all the steps within the wizard. This method allows you to put a finishing touch on the report before loading it into the End-User Designer for further editing.

Another scenario we want to address involves an application developer's ability to register custom report templates on the start screen of the Report Wizard. Here's an early mockup of this screen (includes an integrated search bar):

To register a custom report template, you will need to override the GetReportWizardTemplates method. For instance, the following code snippet removes the Cross-Tab report from the wizard and adds two ReportWizardTemplate items to the collection:


public override ReportWizardTemplate[] GetReportWizardTemplates() {
    var predefined = base.GetReportWizardTemplates().ToList(); // Get Predefined Report Types
    predefined.Remove(predefined.Where(x => x.ID == nameof(ReportType.CrossTab)).First()); // Remove CrossTab Report
    predefined.Add(new ReportWizardTemplate() {  // Add Custom Types
        ID = nameof(ReportCustomType.CustomLabelReport),
        DefaultText = "Custom Label Report",
        ImageClassName = "custom-label-report-class-name",
        ImageTemplateName = "dxrd-svg-wizard-LabelReport"
    });
    predefined.Add(new ReportWizardTemplate() {
        ID = nameof(ReportCustomType.InstantFinishReport),
        DefaultText = "Instant Finish Report",
        ImageClassName = "icon-class-name",
        CanInstantlyFinish = true
    });
    return predefined.ToArray();
}

The ReportWizardTemplate.CanInstantlyFinish property will allow you to manage wizard behavior once a user selects a custom template. The Web Report Designer will open this report bypassing all wizard pages when this property is enabled. Otherwise, a user will be guided through Report Wizard pages to set up a report's data source.

Your Feedback Matters

Please be sure to submit your feedback to the survey below and let us know what you think about this new functionality.

Free DevExpress Products - Get Your Copy Today

The following free DevExpress product offers remain available. Should you have any questions about the free offers below, please submit a ticket via the DevExpress Support Center at your convenience. We'll be happy to follow-up.