在一些系统中,并不需要先进行预览操作,而是直接打印报表数据。比如在电子商务系统中客户订单打印功能,操作人员在填写必要的用户数据之后,点击单页按钮便可直接打印客户订单。本文就结合 ActiveReports 来实现 Web 系统中直接打印报表的需求。在 ActiveReports 中实现 Web 客户端直接打印操作,主要是借助 ActiveReports 所提供的 Flash 类型的 WebViewer 控件,该控件可以在加载报表之后直接打印。
首先,创建一个 Web 应用程序,添加 ActiveReports 报表到工程中,并在 aspx 页面中添加 WebViewer 控件,然后设置 WebViewer 的 ViewerType 为 FlashViewer。
然后,在打印按钮单击事件的后台代码中设置 WebViewer1.FlashViewerOptions.PrintOptions.StartPrint = true;,以实现加载报表之后直接打印。
protected void Button2_Click(object sender, EventArgs e){GrapeCity.ActiveReports.PageReport report = new GrapeCity.ActiveReports.PageReport(new System.IO.FileInfo(Server.MapPath(@"Reports\rptInvoice.rdlx")));// 获取用户输入数据,并传递到报表中。
report.Report.ReportParameters[1].DefaultValue.Values.Add(TextBox1.Text);report.Report.ReportParameters[2].DefaultValue.Values.Add(TextBox2.Text);report.Report.ReportParameters[3].DefaultValue.Values.Add(TextBox3.Text);report.Report.ReportParameters[4].DefaultValue.Values.Add(TextBox4.Text);report.Report.ReportParameters[5].DefaultValue.Values.Add(TextBox5.Text);report.Report.ReportParameters[6].DefaultValue.Values.Add(TextBox6.Text);WebViewer1.Report = report;WebViewer1.FlashViewerOptions.PrintOptions.StartPrint = true;
WebViewer1.Visible = true;
WebViewer1.Width = 0;WebViewer1.Height = 0;}
预览打印运行截图:
直接打印运行截图:
源码下载:VS2010 + ActiveReports 7