2011-04-14 31 views
0

我已經創建了一個數據集並在我的水晶報告中使用它。問題是,在設計時我能夠顯示數據,但是當我使用ASP.Net頁面執行它時,它顯示一個空白頁面。以下是我用於以編程方式顯示報告的代碼:無法在ASP.Net頁面中顯示報告

/// <summary> 
     /// Displays batch report 
     /// </summary> 
     /// <param name="agreementId"></param> 
     private void ShowStatements(string agreementId) 
     { 
      var crvStatements = new CrystalReportViewer(); 
      var reportDocument = new ReportDocument(); 
      reportDocument.Load(Server.MapPath("Statements.rpt")); 
      crvStatements.ReportSource = reportDocument; 
      var dt1 = new dsStatements.usp_GetBillDetailsByAgreementIdDataTable(); 
      var dt2 = new dsStatements.usp_GetTransactionTypesByAgreementIdForBillDataTable(); 
      var adapter1 = new usp_GetBillDetailsByAgreementIdTableAdapter(); 
      var adapter2 = new usp_GetTransactionTypesByAgreementIdForBillTableAdapter(); 
      adapter1.Fill(dt1, agreementId); 
      adapter2.Fill(dt2, agreementId); 
      //var statements = new dsStatements(); 
      //statements.Tables.Add(dt1); 
      //statements.Tables.Add(dt2); 
      // reportDocument.SetDataSource(dsStatements); 

      crvStatements.RefreshReport(); 
     } 

請注意,我沒有在頁面上使用過任何控件。我以編程方式添加報表查看器,報表源和數據集。請幫助我。我需要它儘快。我正在使用VS 2010與CR 2010

回答

1

您能否提供您在運行時創建Crystal Report Viewer的原因,而不是簡單地在頁面上創建控件?有些人這樣做,以便他們可以不顯示出口,但我沒有看到任何代碼。

我還沒有測試過這個,但是我相信如果你在頁面上有一個查看器控件,下面的代碼就可以工作。

private void ShowStatements(string agreementId) 
    { 
     //var crvStatements = new CrystalReportViewer(); //created on the page 
     ReportDocument reportDocument = new ReportDocument(); 
     reportDocument.Load(Server.MapPath("Statements.rpt")); 
     crvStatements.ReportSource = reportDocument; 
     System.Data.DataTable dt1 = new dsStatements.usp_GetBillDetailsByAgreementIdDataTable(); 
     System.Data.DataTable dt2 = new dsStatements.usp_GetTransactionTypesByAgreementIdForBillDataTable(); 
     System.Data.DataSet statements = new System.Data.DataSet(); 
     statements.Tables.Add(dt1); 
     statements.Tables.Add(dt2); 
     reportDocument.SetDataSource(dsStatements); 

     crvStatements.DataBind(); 
    } 

我假設,該報告是建立與這些表中的報告鏈接,你可能不得不放棄該數據表的名稱,使水晶知道如何給每個數據表中的映射到相應的表報告。如果可能的話,您可能會嘗試將報表限制爲接受單個表格,直到您完成加載邏輯。

如果這些數據表中的每一個都代表子報表的數據,那麼您必須遍歷這些報表並手動設置數據源。

我希望這有幫助,但我回答了這個問題,因此我可能會錯過一些東西。如果它不起作用,您只需提供評論,我們可以解決任何問題。

+0

我有VS2008和VS 2010都安裝在我的機器上。兩個版本的水晶報告。但是當我拖放控件在ASP.Net頁面上顯示一個錯誤。根據錯誤,我的機器安裝了CR版本10和CR版本13。但在VS2010上。版本不是參考版本13,而是版本10之間的某種衝突。 – 2011-04-16 08:55:37

+0

無論如何,我已切換到Microsoft Report,並且問題已得到解決。謝謝你們的時間。 – 2011-04-16 08:56:24

1

RefreshReport();使報告顯示爲空。在加載數據集之前嘗試它。

+0

不,這不是問題 – 2011-04-14 11:47:52

相關問題