2011-05-25 46 views
0

我正試圖在ASP.net web應用程序的報表查看器中加載報表。問題是我有兩個項目,類庫和Web應用程序。在Web應用程序中,我有.edmx和wcf數據服務(即引用edmx)。在類庫中我引用了該服務。我已經創建了一個類(公司),我寫了linq查詢。最後,我在Web應用程序中創建了rdlc報告,並使用公司類作爲對象來獲取所有字段來設計報告。這一切都是完美的,並且運作良好。現在,我有什麼問題是,當我試圖動態加載按鈕單擊報告,然後我得到了我所使用的代碼「報告processing.Dataset1時發生錯誤」,如下:如何在ASP.net中動態加載rdlc和數據源reportviwer?

protected void CompanyReport_Click(object sender, EventArgs e) 
     { 
      ReportViewer1.LocalReport.ReportPath = @"c:\..\..\..\..\..\..\..\Reports\CompanyReport.rdlc"; 
      ReportDataSource ds = new ReportDataSource(); 
      ds.Name = "Dataset1"; 
      ReportViewer1.LocalReport.DataSources.Add(ds); 

     } 

回答

0

這是可能的您的Web服務器正在運行的用戶帳戶無權訪問報告的路徑。此外,路徑可能應該是相對的而不是絕對的,否則在部署到託管的Web服務器時必須更改路徑。來回切換可能會令人厭煩。

我在示例中注意到的一件事是您正在創建ReportDataSource並分配名稱,但不分配數據源。這可能是問題的一部分。

嘗試這樣的事情,並確保theDataSet是您的數據源的一個實例,並且DataSet的類型與報表定義中爲Dataset1指定的類型相匹配。

ReportDataSource ds = new ReportDataSource("Dataset1", theDataSet); 

希望這會有所幫助。