我的项目中有两个水晶报告。
我在My项目中有SaleBillReport.rpt文件。 使用报告对象方法加载,其代码如下所示。
第一份报告显示为 -
案例1:
SaleBillReport rptObj = new SaleBillReport();//My Rpt file name
rptObj.SetDataSource(_ReportDataSet);
_reportViewer.ReportSource = rptObj;
第二份报告显示为 -
案例2:
ReportDocument objReportDoc = new ReportDocument();
objReportDoc.Load(@"D:\\" + "MyReport.rpt");
ReportViewerNew.ReportSource = objReportDoc;
我的问题是,在部署此项目时,我不需要将任何.rpt文件放在任何位置。 它是在我的应用程序中内置的。
但是我必须将我的第二个.rpt文件放到任何显示路径上。(我不想放在任何地方) 那么我如何在部署期间在我的项目中构建案例2 .rpt文件。
提前致谢
答案 0 :(得分:0)
使用Reflection查找应用程序的安装位置
System.Reflection.Assembly.GetExecutingAssembly
并询问该程序集的文件夹,并将您的报告文件名添加到该路径...
答案 1 :(得分:0)
一种解决方案可以使用反射,但这有点棘手。
第二个和更简单的一个将使用Environment.CurrentDirectory
。
为此,请修改您的Case 2代码 -
ReportDocument objReportDoc = new ReportDocument();
string reportPath = System.IO.Path.Combine(Environment.CurrentDirectory, "MyReport.rpt");
objReportDoc.Load(reportPath);
ReportViewerNew.ReportSource = objReportDoc;
并且您的报告在当前目录位置始终是永久性的,只需转到MyReport.rpt文件的属性,然后选择始终复制或复制如果更新