1、我现在有这样一个需求,winform程序中,在报表Viewer加载完后调用它的完成事件设置打印机,打印报表,报表是页面报表,每次只会生成一页报表,现在要打印此页报表两次,每次更改报表的标题内容,请问这样的需求如何实现?
2、我现在想到的办法是增加一个报表参数,循环调用打印机实现打印两次,每次调用打印前通过PageReport对象来更改报表参数,但是发现这边在报表文档加载完成后更改参数值不会生效,是需要重新加载报表文档还是要怎么样做,求助各位老师帮忙看看有什么解决方案?如果不用报表参数这种方式,有其他什么办法么?
3、代码
///成员属性
private PageReport pageReport;
private GrapeCity.ActiveReports.Viewer.Win.Viewer viewer1;
private List<Object> dtos = new List<Object>();
///初始化报表
private void InitializeReport()
{
pageReport = new PageReport(new FileInfo(Path.Combine(Application.StartupPath, @"..\..\Report\LoadVoucher\pageReport1.rdlx")));
GrapeCity.ActiveReports.Document.PageDocument pageDocument = new GrapeCity.ActiveReports.Document.PageDocument(pageReport);
viewer1.LoadDocument(pageDocument);
}
//打印报表
private void Viewer1_LoadCompleted(object sender, EventArgs e)
{
pageReport.Document.Printer.PrinterName = @"HP LaserJet P1008";
for (int i = 0; i < 2; i++)
{
if (i == 0)
{
pageReport.Report.ReportParameters[0].DefaultValue.Values.Add("第一联提货凭证");
}
else
{
pageReport.Report.ReportParameters[0].DefaultValue.Values.Add("第二联结算凭证");
}
pageReport.Document.Printer.Landscape = true;
pageReport.Run();
pageReport.Document.Print(false, false, false);
}
}
///报表绑定数据源
private void viewer1_LocateDataSource(object sender, LocateDataSourceEventArgs args)
{
args.Data = this.dtos;
}
|
|