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后,点打印后状态栏一直读条页面没反应