C# でコードを実行して、Crystal Reports でレポートを生成し、ブラウザで PDF で開きます。
ユーザーがシステムにログインして、最初にレポートの 1 つを生成しようとすると、処理に時間がかかります...しかし、最初のレポートを生成した後、他のレポートは自動的に生成されます!
誰かが私が何をすべきか知っていますか? 私のコードは次のとおりです。
ボタンをクリックして 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();
}
ありがとう!