2012-02-14 67 views
3

我的方案是創建一個包含我的報表的DLL,然後將該DLL添加到我的主項目中。我的報告被設置爲嵌入式資源,在我的主項目中,我正在執行以下操作將報告設置到ReportViewer中。將C#拉出報表並將其放入報表查看器

Assembly assembly = Assembly.LoadFrom("MyAssembly.dll"); 
Stream stream = assembly.GetManifestResourceStream("MyAssembly.Reports.MyReport.rdlc"); 
MyReportViewer.LocalReport.LoadReportDefinition(stream); 
MyReportViewer.RefreshReport(); 

現在當我這樣做時,我知道報告正在加載,因爲我可以設置ReportParameters。如果它根本沒有加載,我會拋出一個異常,說明參數不存在,或者出現這種情況。

發生什麼事是我的報告將加載所述參數,當我RefreshReport(),我得到這個。

尚未指定報告定義的來源。

任何線索,爲什麼會發生這種情況?我覺得在加載dll報告時我可能會錯過一些東西。但是,當我搜索互聯網時,似乎這是正確的解決方案。

作爲一個方面說明,我在我的.dll中有一個表單,我正在調用並將報表加載到完全正確的狀態。但是,這是另一種情況,因爲該表格明確知道報告的位置。

在這種情況下,我有一個不在.dll裏面的ReportViewer,我試圖將.rdlc裏面的.dll加載到我的ReportViewer中,它不在dll內部。

編輯 最糟糕的是,如果我用下面的代碼,我可以看到我需要的DLL文件。

string[] resources = assembly.GetManifestResourceNames(); 

「MyApp.Controls.Reports.MyCustomReport.rdlc」

+0

嗨,你有沒有在此期間找到解決方案? – Raphael 2013-12-10 15:04:13

回答

1

在程序開始時這小小的一段代碼解決我的問題

MyReportViewer.Reset(); 
+1

這實際上也幫助了我,我忘了添加它作爲答案 – meanbunny 2013-12-10 17:28:02