Hi,
因为您采用子报表控件的目的是,实现批量打印和批量报表预览,但由于子报表控件在显示页码方面有很大的限制,所以采用了另一种方法来实现批量于看和打印:
1. 采用循环生成报表(根据传入的参数,生成5个报表):
- public void CreateReport()
- {
- for (int i = 0; i < 5; i++)
- {
- // 创建 Container 控件,用户加载 Subreport 控件
- report[i] = new GrapeCity.ActiveReports.PageReport(new System.IO.FileInfo(Server.MapPath("RdlReport1.rdlx")));
- report[i].Report.ReportParameters[0].DefaultValue.Values.Add(i.ToString());
- report[i].Document.LocateDataSource += new GrapeCity.ActiveReports.LocateDataSourceEventHandler(pageDocument_LocateDataSource);
- }
- }
复制代码
2. 在页面中添加下一张报表按钮,分别加载报表
- protected void NextReport_Click(object sender, EventArgs e)
- {
- int index = (int)Session["aa"];
- this.WebViewer1.Report = report[index];
- Session["aa"] = ++index;
- if (index == 5)
- Session["aa"] = 0;
- }
复制代码
3. 也可以将几个报表合并成一个PDF ,并在浏览器打开,实现预览的效果:
- for (int i = 0; i < 5; i++)
- {
- PageDocument rptd = new GrapeCity.ActiveReports.Document.PageDocument(report[i]);
- rptd.LocateDataSource += new GrapeCity.ActiveReports.LocateDataSourceEventHandler(pageDocument_LocateDataSource);
- // Export the report in PDF format.
- GrapeCity.ActiveReports.Export.Pdf.Section.PdfExport PdfExport1 = new GrapeCity.ActiveReports.Export.Pdf.Section.PdfExport();
- if (i == 0)
- { PdfExport1.Export(rptd, exportFileAfter); }
- if (i == 1)
- {
- GrapeCity.ActiveReports.Export.Pdf.Page.Settings settings = new GrapeCity.ActiveReports.Export.Pdf.Page.Settings();
- settings.DocumentToAddBeforeReport = exportFileAfter;
- FileInfo myFile1 = new FileInfo(exportFileAfter1);
- PdfRenderingExtension pdfRenderingExtension = new PdfRenderingExtension();
- FileStreamProvider _outputProvider = new FileStreamProvider(myFile1.Directory, myFile1.Name);
- rptd.Render(pdfRenderingExtension, _outputProvider, settings);
复制代码
Demo:
|