很多朋友都利用水晶报表技术来做报表,它支持直接将报表导出为包括Excel,Pdf在内的多种格式。它的导出操作是通过CrystalReportViewer上面的一个导出按钮实现的。我们无需为此编写任何代码。
正因为我们没有为其编写代码,所以有一个问题就随之出现了。它内部处理的机制是:导出的时候自动用CrystalReportViewer的ID属性作为文件名,如果该ID 有空格,自动以下划线替换之。
那么,如果我们需要用这个CrystalReportViewer动态加载多个报表,很显然,我们希望导出的时候文件名是不一样的。但是该CrystalReportViewer的ID却只能有一个,这是不是一个矛盾呢?
其实也不难解决,我们可以在DataBind之后,通过编码的方式修改CrystalReportViewer的ID。
CrystalDecisions.CrystalReports.Engine.ReportDocument doc = new CrystalDecisions.CrystalReports.Engine.ReportDocument();
string reportPath = Server.MapPath("..\\..\\Report\\PurInvoice.rpt");
doc.Load(reportPath);
doc.SetDataSource(ds.Tables[0].DefaultView);
CrystalReportViewer1.Width = 1200;
CrystalReportViewer1.ID = "导出的名字";
CrystalReportViewer1.ReportSource = doc;
本文介绍如何使用水晶报表技术动态加载多个报表,并通过修改CrystalReportViewer的ID来实现每个报表导出时拥有不同的文件名。
293

被折叠的 条评论
为什么被折叠?



