我必须准备报告的每条记录都有奇数页面。当我运行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()
答案 0 :(得分:2)
找到了解决方案。
此行为是由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支持显示合并后的报告。