如何更改水晶报表导出文件的名称
很多朋友都利用水晶报表技术来做报表,它支持直接将报表导出为包括Excel,Pdf在内的多种格式。它的导出操作是通过CrystalReportViewer上面的一个导出按钮实现的。我们无需为此编写任何代码。
正因为我们没有为其编写代码,所以有一个问题就随之出现了。它内部处理的机制是:导出的时候自动用CrystalReportViewer的ID属性作为文件名,如果该ID 有空格,自动以下划线替换之。
那么,如果我们需要用这个CrystalReportViewer动态加载多个报表,很显然,我们希望导出的时候文件名是不一样的。但是该CrystalReportViewer的ID却只能有一个,这是不是一个矛盾呢?
其实也不难解决,我们可以在DataBind之后,通过编码的方式修改CrystalReportViewer的ID。
private void PrintQuo()
{
try
{
clsQuoHd quoHd = new clsQuoHd(clsQuoHd.getSrvCode(this.squoCode));
DataSet ds = clsRptQuotation.GetQuoItem(squoCode);
//if (sQuoClass == "国内")
//if (sQuoClass == "0")
if (quoHd.quoClass == "1") //国内
{
CrystalReportSource1.ReportDocument.Load(Server.MapPath("RptQuotationZH.rpt"));
}
else
{
CrystalReportSource1.ReportDocument.Load(Server.MapPath("RptQuotation.rpt"));
}
CrystalReportSource1.ReportDocument.SetDataSource(ds);
//注意此处必需指明Dataset中的表的名称,否则会提示“您请求的报表需要更多信息.”
//CrystalReportSource1.ReportDocument.SetDataSource(ds);
//CrystalReportSource1.ReportDocument.SetDataSource(ds.Tables["QuoHd"]);
CrystalReportSource1.DataBind();
CrystalReportViewer1.ReportSource = CrystalReportSource1;
CrystalReportViewer1.DataBind();
CrystalReportViewer1.ID = this.squoCode;
}
catch (Exception ex)
{
Response.Write(ex.ToString());
}
}
http://www.cnblogs.com/chenxizhang/archive/2008/08/22/1273751.html