Не удается объединить две страницы XtraReport в третьем XtraReport

У меня есть нечетные четные страницы для каждой записи, которую я должен подготовить для отчета. когда я запускаю приложение MVC, я вижу XtraReport Viewer, но в нем нет страниц.

Контроллер/логика действий

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()

person Rashmin Javiya    schedule 17.02.2016    source источник


Ответы (1)


Решение найдено.

Такое поведение вызвано тем, что расширение WebDocumentViewer повторно создает документ отчета для его предварительного просмотра. Таким образом, страницы отчета, добавленные в ваш отчет динамически, будут очищены.

В настоящее время при использовании элемента управления HTML5 Document Viewer для предварительного просмотра отчета необходимо вызывать обработчик событий XtraReport.AfterPrint для объединения страниц отчета. Итак, обработайте событие AfterPrint отчета «r2» и используйте этот обработчик событий, чтобы добавить страницы отчета «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 поддерживает отображение объединенных отчетов по умолчанию.

person Rashmin Javiya    schedule 19.02.2016