EPR类企业管理系统

在我们现有系统基础上或全新开发,提供定制服务
为您的企业高效快速实施ERP,WMS,MES,CRM管理系统
全面管控物料仓库、销售业务、采购业务、仓库业务
生产过程、质量检验、组织架构、业务报表


定制
QQ:460-3528

开发
QQ群:3360-90194

源码
微信:136-3650-3721

如何:合并两个报表的页面

本示例演示如何通过处理ReportDataSourceHelper.BeforeShowPreview事件在显示报告内容之前对其进行修改。

注意

移动应用程序不支持报告预览机制,因此本主题中描述的方法无法在移动平台中实现。

在本主题中,假定您有一个使用Reports V2 Module的XAF应用程序,并且已经创建了一个或多个报告(请参阅Reports V2 Module Overview)。

要在显示两个报表之前合并它们,请实现以下帮助程序类,该类处理ReportDataSourceHelper.BeforeShowPreview事件。在这个例子中,从这些网页中SecondReport将被附加到所述的页面FirstReportFirstReport被预览。

using DevExpress.XtraReports.UI;
using DevExpress.ExpressApp;
using DevExpress.ExpressApp.ReportsV2;
// ...
public class MergeReportHelper {
    ReportDataSourceHelper helper;
    public MergeReportHelper(ModuleList modules) {
        ReportsModuleV2 module = ReportsModuleV2.FindReportsModule(modules);
        if (module != null) {
            module.ReportsDataSourceHelper.BeforeShowPreview  =
                ReportsDataSourceHelper_BeforeShowPreview;
        }
    }
    private void ReportsDataSourceHelper_BeforeShowPreview(
        object sender, BeforeShowPreviewEventArgs e) {
        MergeReportsBeforeShow(e.Report, (ReportDataSourceHelper)sender);
    }
    private void MergeReportsBeforeShow(
        XtraReport report, ReportDataSourceHelper reportsDataSourceHelper) {
        if (report is FirstReport) {
            report.AfterPrint  = report_AfterPrint;
            helper = reportsDataSourceHelper;
        }
    }
    void report_AfterPrint(object sender, EventArgs e) {
        FirstReport firstReport = sender as FirstReport;
        SecondReport secondReport = new SecondReport();
        helper.SetupReport(secondReport);
        secondReport.CreateDocument(false);
        firstReport.Pages.AddRange(secondReport.Pages);
        firstReport.PrintingSystem.ContinuousPageNumbering = true;
    }
}

ReportDataSourceHelper.SetupReport方法调用需要显示XAF的报告。没有它,数据源将无法提供数据。

应用程序安装完成后,创建MergeReportHelper类的实例。您可以在平台无关的模块中执行此操作,方法是处理重写的ModuleBase.Setup方法中的XafApplication.SetupComplete事件。

public override void Setup(XafApplication application) {
    base.Setup(application);
    application.SetupComplete  = delegate(object sender, EventArgs e) {
        new MergeReportHelper(((XafApplication)sender).Modules);
    };
}

转载保留此链接,注明出处