C#从DLL中提取报表并将其放入报表查看器中

时间:2012-02-14 18:39:10

标签: c# dll reporting embedded-resource

我的方案是我正在创建一个DLL,其中包含我的报告,然后将该DLL添加到我的主项目中。我的报告被设置为嵌入式资源,在我的主项目中,我正在执行以下操作将报告设置为ReportViewer。

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

现在当我这样做时,我知道报告正在加载,因为我可以设置ReportParameters。如果它根本没有加载,我会抛出一个异常,说明参数不存在或者是那种效果。

发生的事情是我的报告将加载所述参数,当我刷新Readport()时,我得到了这个。

  

尚未指定报告定义的来源。

有关为什么会发生这种情况的任何线索?在从dll加载报告时,我觉得我可能会遗漏一些东西。但是,当我浏览互联网时,似乎这是正确的解决方案。

作为旁注,我在我的.dll中有一个表单,我正在调用并将报告加载到完全正常的状态。但是,这是一个不同的情况,因为该表单特别知道该报告的位置。

在这种情况下,我有一个不在.dll中的ReportViewer,我试图将.dll中的.rdlc加载到我的ReportViewer中,而不是在dll中。

修改 最重要的是,如果我使用以下代码,我可以在dll中看到我需要的文件。

string[] resources = assembly.GetManifestResourceNames();
  

“MyApp.Controls.Reports.MyCustomReport.rdlc”

1 个答案:

答案 0 :(得分:1)

程序开头的这段小代码解决了我的问题

 MyReportViewer.Reset();