我在C#中使用Crystal Reports生成报告,并在浏览器中以PDF格式打开。
当用户登录系统并首次生成其中一个报告时,需要很长时间才能处理...但是,在生成第一个报告后,其他报告会自动生成!
有人知道我该怎么办? 我的代码是:
点击按钮时生成PDF:
ReportDocument Rel = new ReportDocument();
Rel.Load(Server.MapPath("../Reports/Report1.rpt"));
Rel.SetParameterValue("@Id", Id);
Session.Add("Report", Rel);
string _open = "window.open('Report.aspx');";
ScriptManager.RegisterStartupScript(this, this.GetType(), Guid.NewGuid().ToString(), _open, true);
在页面" Report.aspx":
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
if (Session["Report"] != null)
OpenPDF((ReportDocument)Session["Report"]);
}
}
private void OpenPDF(ReportDocument Rel)
{
MemoryStream stream = (MemoryStream)Rel.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat);
Response.Clear();
Response.Buffer = true;
Response.ContentType = "application/pdf";
Response.BinaryWrite(stream.ToArray());
Response.End();
}
谢谢!
答案 0 :(得分:1)
不确定您的报告文件包含什么,以及它是否处理的页面多于导出的页面,但您可以为用户预加载运行时,以便后续报告呈现在执行时间不明显。
编辑:
创建一个空白报告并将其加载到某个地方,例如,在生成报告之前,他们前往的上一页的Page_Load;主页或小节。然后关闭并随后处理报告。另外,从项目引用中删除未使用的任何Crystal Reports程序集。