ReportViewer:如何使用反射将报表作为嵌入式资源加载到另一个程序集中?

问题描述 投票:3回答:2

我不太确定该怎么做。我创建了一个通用类来为我的应用程序打开报告。报告包含在另一个DLL中,但该DLL未被引用为嵌入式资源。

如果我引用DLL,我可以做:Viewer.LocalReport.ReportEmbeddedResource = "SomeLibrary.ReportName.rdlc";

但是,由于我没有引用DLL,所以我必须通过反射来获取报告。这就是我卡住的地方。我真的不确定该怎么做。

c# reflection embedded-resource reportviewer2008
2个回答
2
投票

我找到了一种方法,可以通过读取RDLC并返回Stream来实现。

public void PrepareReport(IAppReport report)
{
   Viewer.LocalReport.LoadReportDefinition(report.GetStream());
}

有了一点反射,我就能够拉出该Stream对象。


0
投票
System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();
Stream streamReport = assembly.GetManifestResourceStream("MyProjectOrAssemblyName.Reports.Report1.rdlc");

reportView1.ProcessingMode = ProcessingMode.Local;
reportView1.LocalReport.LoadReportDefinition(streamReport);
© www.soinside.com 2019 - 2024. All rights reserved.