如何在crystal report viewer中设置默认导出名称

时间:2009-03-11 17:47:20

标签: crystal-reports

在ASP.NET页面上,当用户从Crystal Report Viewer(CRV)查看报表时,他们可以导出报表(例如,PDF)。导出的默认文件名是CRV的ID。

我想将默认名称设置为基于报告参数的内容。 (例如“2008年的销售”)。

我知道我可以添加一个链接到页面,然后我可以编写一个解决方案,我在代码中生成PDF并将其流式传输到浏览器,但我希望有可能有办法做到这一点水晶报告中的诞生。

4 个答案:

答案 0 :(得分:3)

// You could pass the parameters to the web page 
// where you have theCrystalReportViewer control
protected void Page_Load(object sender, EventArgs e)
{
  string reportId = Request["rid"];
  string reportTitle = Request["rtitle"];

  ReportDocument reportDocument = HttpContext.Current.Session[reportId] as ReportDocument;
  this.CommonCrystalReportViewer.ReportSource = reportDocument;
  this.CommonCrystalReportViewer.DataBind();

  // Set the default export file name for the report.
  this.CommonCrystalReportViewer.ID = reportTitle;
}

答案 1 :(得分:0)

如果您使用Visual Studio 2008创建报告,则可以编辑创建的ReportClass以添加DefaultName属性。

答案 2 :(得分:0)

本地有一个ReportExporter类而不是ReportViewer类,但它不再受支持了。有一些类似的第三部分。

我使用此代码示例:

从报告中获取参数值(如果您还没有从Session,QueryString或其他地方获取)

string myParamName="XXX";
object myParamValue;
foreach (ParameterField field in reportDocument.ParameterFields)
            {
               if (string.Compare(field.Name.TrimStart('@'), myParamName, true) == 0)
                    myParamValue= field.CurrentValues;
            }

使用报告名称导出

string myReportName = "sales for " + myParamValue.ToString() + ".pdf";
try
    {
     reportDocument.ExportToHttpResponse( 
                 ExportFormatType.PortableDocFormat
                 ,Response, true, myReportName);
    }
catch (System.Threading.ThreadAbortException)
    {
        //System.Threading.ThreadAbortException is thrown  
        //because, Response.End is called internally in ExportToHttpResponse method:
    }

答案 3 :(得分:-1)

protected void Page_Init(object sender, EventArgs e) {
    ...
    // Set the default export file name for the report.
    this.mainReportViewer.ID = reportTitle;
    ...
}

必须更改reportViewer函数中的id Page_Init,否则无效。