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

本文关键字:报表 DLL 提取 | 更新日期: 2023-09-27 18:24:27

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

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

现在,当我这样做时,我知道报表正在加载,因为我可以设置ReportParameters。如果它根本没有加载,我会抛出一个异常,声明参数不存在或类似的情况。

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

尚未指定报表定义的源。

有没有线索表明为什么会发生这种情况?当涉及到从dll加载报告时,我觉得我可能遗漏了一些内容。然而,当我搜索互联网时,这似乎是正确的解决方案。

顺便说一句,我在.dll中有一个表单,我正在调用它并将报告加载到非常好的位置。然而,这是另一种情况,因为该表格具体知道报告在哪里

在这种情况下,我有一个不在.dll中的ReportViewer,我正试图将.dll中的.rdlc加载到不在dll中的Report查看器中。

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

    string[] resources = assembly.GetManifestResourceNames();
> "MyApp.Controls.Reports.MyCustomReport.rdlc"

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

过程开始时的这段小代码解决了我的问题

 MyReportViewer.Reset();