无法在第三个 XtraReport 中合并两个 XtraReport 页面

Can't merge two XtraReport Pages in Third XtraReport

我必须准备报告的每条记录都有奇偶页。当我 运行 MVC 应用程序时,我可以看到 XtraReport 查看器,但其中没有页面。

Controller/Action逻辑

var xtraReport1 = XtraReport.FromStream(GenerateStreamFromString(layout1), true);
var xtraReport2 = XtraReport.FromStream(GenerateStreamFromString(layout2), true);

var finalExtraReport = new XtraReport();

foreach(var row in dataTable.Rows)
{
    xtraReport1 = XtraReport.FromStream(GenerateStreamFromString(layout1), true);
    xtraReport1.DataSource = dataTable.Select("id = '"+ row[id] +"'")CopyToDataTable();
    xtraReport1.CreateDocument();
    finalExtraReport.Pages.AddRange(xtraReport1.Pages);

    xtraReport2 = XtraReport.FromStream(GenerateStreamFromString(layout2), true);   
    xtraReport2.DataSource = dataTable.Select("id = '"+ row[id] +"'")CopyToDataTable();
    xtraReport2.CreateDocument();
    finalExtraReport.Pages.AddRange(xtraReport2.Pages);
}

return View(finalExtraReport);

查看

@model XtraReport
@{
    ViewBag.Title = "Home Page";
}

@Html.DevExpress().WebDocumentViewer(settings =>
{
    settings.Name = "webDocumentViewer";
}).Bind(Model).GetHtml()

找到解决方案。

此行为是由于 WebDocumentViewer 扩展重新创建报表文档以进行预览所导致的。因此,动态添加到您的报告中的报告页面将被清除。

目前,在使用HTML5文档查看器控件预览报表时,需要调用XtraReport.AfterPrint事件处理程序来合并报表页面。因此,处理您的 "r2" 报告的 AfterPrint 事件并使用此事件处理程序将 "r1" 报告的页面添加到 "r2" 报告。

public ActionResult ShowReport()
{
     //...
     XtraReport mainReport = //get a report;
     mainReport.AfterPrint += Report_AfterPrint;
     //...
}
void Report_AfterPrint(object sender, EventArgs e) {
     //merge reports
    XtraReport sourceReport = sender as XtraReport;

    XtraReport additionalReport = new XtraReport1();
    additionalReport.CreateDocument();

    sourceReport.Pages.AddRange(additionalReport.Pages);
}

注意:从版本 15.2.5 开始,WebDocumentViewer 支持开箱即用地显示合并报告。