2017-01-12 18 views
0

Crystal ReportをCommonReportViewer.aspxページで一緒にpdfに直接ダウンロードしたいのですが、ソースサーバーMYPROJECTでプロジェクトを実行しています。D:\ MYPROJECT \ Reporting \ Deposit \ Reports。 Stackoverflowで異なるソリューションを試しました。具体的にはExportToDisk、ExportOptionsなどがありますが、解決策を得ることはできません。私の場合は、銀行のレポートを表示するために、私はフォームを通じてレポートパラメータを提供し、最後にレポートパラメータに到達し、レポートが表示されます。私の問題は、複数ページのレポートを印刷するために必要なので、どのようにしてpdfでそのレポートを直接ダウンロードできるのですか?Crystal Reportsに直接ダウンロードするC#

CommonReportViewer.aspx.cs

public partial class CommonReportViewer : System.Web.UI.Page 
    { 
     ReportDocument mainDoc = new ReportDocument(); 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      try 
      { 

       CrystalReport report = new CrystalReport(); 
       report = (CrystalReport)Session["NLK_REPORT"]; 
       DateTime t1 = DateTime.Now; 
       mainDoc.Load(report.ReportFilePath, OpenReportMethod.OpenReportByDefault); 
       mainDoc.RecordSelectionFormula = report.SelectionCriteria; 

       mainDoc.Refresh(); 
       string server = "NLKNEWDB"; 
       string userID = report.UserID; 
       string password = report.Password; 

       this.ApplyLogonInfo(mainDoc, server, userID, password); 


       foreach (ReportParameter param in report.ParamList) 
       { 
        mainDoc.SetParameterValue(param.ParamName, param.ParamValue); 
       } 

       foreach (SubReport sr in report.SubReportList) 
       { 
        this.ApplyLogonInfo(mainDoc, server, userID, password); 
        foreach (ReportParameter param in sr.ParamList) 
        { 

         mainDoc.SetParameterValue(param.ParamName, param.ParamValue, sr.SubReportName); 
        } 
       } 

       mainDoc.SetDatabaseLogon(userID, password, server, ""); 

       this.crptViewer.ReportSource = mainDoc; 

       mainDoc.DataSourceConnections.Clear(); 


      } 
      finally 
      { 

      } 
     } 

     void ApplyLogonInfo(ReportDocument report, string server, string userID, string password) 
     { 
      TableLogOnInfo info = new TableLogOnInfo(); 
      ConnectionInfo cinfo = new ConnectionInfo(); 

      cinfo.ServerName = server; 
      cinfo.UserID = userID; 
      cinfo.Password = password; 
      info.ConnectionInfo = cinfo; 

      foreach (CrystalDecisions.CrystalReports.Engine.Table tbl in report.Database.Tables) 
      { 
       tbl.ApplyLogOnInfo(info); 
      } 
     } 

     private void Page_Unload(object sender, System.EventArgs e) 
     { 
      if (mainDoc != null) 
      { 
       mainDoc.Close(); 
       mainDoc.Dispose(); 
      } 

     } 
    } 

答えて

0

いくつかの変更は、PDF形式にエクスポートするために行われるべきです。ページが読み込まれると、Page_Loadメソッドが次のように変更されます。

protected void Page_Load(object sender, EventArgs e) 
     { 
      try 
      { 

       CrystalReport report = new CrystalReport(); 
       report = (CrystalReport)Session["NLK_REPORT"]; 
       DateTime t1 = DateTime.Now; 
       mainDoc.Load(report.ReportFilePath, OpenReportMethod.OpenReportByDefault); 
       mainDoc.RecordSelectionFormula = report.SelectionCriteria; 
       mainDoc.Refresh(); 

       string server = "NLKNEWDB"; 
       string userID = report.UserID; 
       string password = report.Password; 
       string empId = null; 

       this.ApplyLogonInfo(mainDoc, server, userID, password); 

       foreach (ReportParameter param in report.ParamList) 
       { 
        mainDoc.SetParameterValue(param.ParamName, param.ParamValue); 
        if (param.ParamName == "P_EMPLOYER_ID") 
        { 
         empId = param.ParamValue.ToString(); 
        } 
       } 

       foreach (SubReport sr in report.SubReportList) 
       { 
        this.ApplyLogonInfo(mainDoc, server, userID, password); 
        foreach (ReportParameter param in sr.ParamList) 
        { 

         mainDoc.SetParameterValue(param.ParamName, param.ParamValue, sr.SubReportName); 
        } 
       } 

       mainDoc.SetDatabaseLogon(userID, password, server, ""); 
       mainDoc.ExportToHttpResponse(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat, Response, true, empId); 
       this.crptViewer.ReportSource = mainDoc; 

       mainDoc.DataSourceConnections.Clear(); 




      } 
      finally 
      { 

      } 
     }