2

使用 Business Objects 的 CrystalReportViewer 控件时,如何检测并手动打印用户当前钻取的报表?您可以使用 CrystalReportViewer 的 Print() 方法自动打印此报表,但我希望能够手动打印此报表。

可以打印 CrystalReportViewer 的主要 ReportSource,但我需要知道用户钻取了什么报表,然后手动打印该特定钻取。有任何想法吗?

4

2 回答 2

1

我不确定您使用的是哪个版本的 Crystal Reports,但如果是 XIR2 或更早版本,那么这是不可能的。我没有用过较新的版本,所以我不能告诉你。过去我为解决此问题所做的一件事是让演练实际上完全链接到另一个报告。然而,这取决于您的查看器如何实际查看报告(通过胖客户端查看器、开发人员或 Web 门户),这是否可行。祝你好运!

于 2008-09-17T05:02:23.827 回答
1

检测:是的!

网页:

<CR:CrystalReportViewer ... 
    ondrill="CrystalReportViewer1_Drill" 
    ondrilldownsubreport="CrystalReportViewer1_DrillDownSubreport" />

后面的代码:

 protected void CrystalReportViewer1_Drill(object source, CrystalDecisions.Web.DrillEventArgs e)
 {
  //drill from graph to list of elements
 }
protected void CrystalReportViewer1_DrillDownSubreport(object source, CrystalDecisions.Web.DrillSubreportEventArgs e)
 {
   //drill from main report to subreports
 }

打印电流:不!

protected void CrystalReportViewer1_DrillDownSubreport(object source, CrystalDecisions.Web.DrillSubreportEventArgs e)
{
    reportDocument.OpenSubreport(e.NewSubreportName).ExportToHttpResponse(format, Response, true, title);
}

导出子报表会引发异常“子报表不允许”。

解决方案

CrystalReportsViewer 的按钮也适用于向下钻取...

<CR:CrystalReportViewer    HasExportButton="true" ....
于 2012-02-13T17:42:18.753 回答