Lenka.Guo 发表于 2016-5-25 17:17:58

grape_puppet 发表于 2016-5-25 16:59
附件为测试程序,请根据测试程序测试子报表的页眉页脚问题。

好的,正在验证

grape_puppet 发表于 2016-5-27 10:44:43

Lenka.Guo 发表于 2016-5-25 17:17
好的,正在验证

郭工,找到解决办法了吗,我们这边比较急

Lenka.Guo 发表于 2016-5-27 11:21:47

本帖最后由 Lenka.Guo 于 2016-5-27 11:26 编辑

grape_puppet 发表于 2016-5-27 10:44
郭工,找到解决办法了吗,我们这边比较急
抱歉给您带来不便。。这两天一直在试各种方法,将页眉信息可以显示到表头部分或者使用TextBox 显示到表格上方可以解决。

页码问题由于1,是动态数据加载;2. 是表尾的数据只需要显示一次,所以这个还在找解决方案。


Lenka.Guo 发表于 2016-5-27 12:16:27

Lenka.Guo 发表于 2016-5-27 11:21
抱歉给您带来不便。。这两天一直在试各种方法,将页眉信息可以显示到表头部分或者使用TextBox 显示到表格 ...

Hi,

我因为子报表主要用Table控件制作的,所以我按照以下步骤实现展示页码;
1. 页码信息显示到 Table的表尾行;


2. 设置表尾 的RepeateOnNewPage 属性为True



3. 因为其他表尾行的信息,只有在最后一页显示,所以设置表尾行的Visibility 属性为:=IIF( Globals!PageNumber = Globals!TotalPages,false,true)



Demo:




grape_puppet 发表于 2016-5-30 09:19:31

Lenka.Guo 发表于 2016-5-27 12:16
Hi,

我因为子报表主要用Table控件制作的,所以我按照以下步骤实现展示页码;


1.现在的需求是一张单据如果数据量过多,表格里的数据换页,页码展示应该是1/2,2/2;第二张单据的页码重新开始1/2,2/2.
2.页码放在table的表尾,在2/2页的table里的数据如果占不满页面,此时的页码位置是根据数据多少变动的,而没有展示到最下方。

Lenka.Guo 发表于 2016-5-30 15:51:50

本帖最后由 Lenka.Guo 于 2016-5-30 15:52 编辑

grape_puppet 发表于 2016-5-30 09:19
1.现在的需求是一张单据如果数据量过多,表格里的数据换页,页码展示应该是1/2,2/2;第二张单据的页码重 ...
您好
1, 给您的示例,页码是否正常显示?

2. 关于位置问题,因为这个涉及到子报表,所以暂有的解决方法是放置到表尾部分,如果放置在其他控件内,可能无法保证页码在每一页都显示。

如果在表尾无法满足您的需求,可能需要重新实现一种方法实现批量打印预览问题。

grape_puppet 发表于 2016-5-30 17:22:40

Lenka.Guo 发表于 2016-5-30 15:51
您好
1, 给您的示例,页码是否正常显示?



现在的页码显示不对,每页都是1/1

Lenka.Guo 发表于 2016-5-30 17:48:26

grape_puppet 发表于 2016-5-30 17:22
现在的页码显示不对,每页都是1/1

好的,了解,谢谢您的反馈,我再寻找其他解决方法,并将这个问题反馈给产品组,看产品组是否有更有效的解决方案。

Lenka.Guo 发表于 2016-5-31 19:24:03

Lenka.Guo 发表于 2016-5-30 17:48
好的,了解,谢谢您的反馈,我再寻找其他解决方法,并将这个问题反馈给产品组,看产品组是否有更有效的解 ...

Hi,

因为您采用子报表控件的目的是,实现批量打印和批量报表预览,但由于子报表控件在显示页码方面有很大的限制,所以采用了另一种方法来实现批量于看和打印:

1. 采用循环生成报表(根据传入的参数,生成5个报表):
public void CreateReport()
      {
            for (int i = 0; i < 5; i++)
            {
                // 创建 Container 控件,用户加载 Subreport 控件
                report = new GrapeCity.ActiveReports.PageReport(new System.IO.FileInfo(Server.MapPath("RdlReport1.rdlx")));

                report.Report.ReportParameters.DefaultValue.Values.Add(i.ToString());
                report.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;

            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);
                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:

grape_puppet 发表于 2016-6-1 10:48:19

Lenka.Guo 发表于 2016-5-31 19:24
Hi,

因为您采用子报表控件的目的是,实现批量打印和批量报表预览,但由于子报表控件在显示页码方面有 ...

点打印怎么弹出打印机选项,现在点打印直接就打了;我设置了print的参数为true后,点打印后状态栏一直读条页面没反应
页: 1 [2] 3
查看完整版本: 子报表页眉,页脚显示问题。