我创建了一个MDI应用程序,该应用程序在不同的子窗体上显示一些DataGridViews,因为它们可以访问不同的数据库,所以它们被视为单独的应用程序。如何在许多RDLC报告上共享和嵌入图像
这些数据需要导出到PDF报告中。我在新的MDI子窗体中使用了ReportViewer组件,并且我在解决方案上创建了一个新的项目,该项目仅包含RDLC报告文件作为与每个应用程序关联的嵌入资源。这是为了避免在程序文件夹中包含每个.RDLC文件的用户可访问的文件夹,出于安全原因。
这是VS的解决方案的文件/文件夹结构:
Solution
|
|_ Classes
| |
| |_ Library Project that contains all the classes used for Data Access...
|
|_ MDIMain
| |
| |_ The main application Project that contains some Core Classes and Forms...
|
|_ Reports (A DLL project that doesn't contain .cs code files, but only folders and RDLC reports)
|
|_ App1
| |
| |_ Report1.rdlc
| |_ Report2.rdlc
| |_ ...
|
|_ App2
|
|_ Report1.rdlc
|_ ...
一切工作正常,但现在我需要通过插入一个标志定制我的所有报告,所以影像。所以我需要为每个报告添加相同的图像。
看好MSDN文档似乎有是用于图像3种可能的来源:
- “嵌入式”:仅通过嵌入单个报告文件中的形象工程。但在我的情况下,由于浪费存储空间,这不是一个有效的解决方案。
- “外部”:通过指定URL或路径(我想要做的)。
- “数据库”:指定包含图像的数据库字段。
.rdlc文件在ReportViewer窗口中被引用并加载,通过使用Reports.dll库作为源文件使用“folder.filename”语法。
/*
* reportSource variable is calculated dynamically with the selection on a ComboBox
* that let the use choose a specific report.
* The source format is like this: "Reports.AppNameFolder.Report1.rdlc"
*/
string reportSource = cmbReport.SelectedValue.ToString();
ReportDataSource rds = new ReportDataSource("");
rds.Name = "DataSet";
rds.Value = _reportDataTable;
Assembly assembly = Assembly.LoadFrom("Reports.dll");
UnmanagedMemoryStream reportStream = (UnmanagedMemoryStream)assembly.GetManifestResourceStream(reportSource);
reportViewer1.LocalReport.DataSources.Clear();
reportViewer1.LocalReport.LoadReportDefinition(reportStream);
reportViewer1.LocalReport.DataSources.Add(rds);
reportViewer1.RefreshReport();
所以,如果我想创建一个包含我的图片文件夹:
- 我应该在哪里把它,与然后将文件夹与主体工程一起输出产生的确定性?
- 如何在调试模式和发布模式下保持对文件夹和图像的引用,以便将程序安装到用户客户端时?
嵌入每个报告内的图像是不是一个好的解决方案数据库解决方案对我来说也是无效的。你最后一个关于作为头部使用的子报表的建议可能是有效的,但我应该如何实现呢?我创建了一个新报告并添加了该徽标图像。但后来我无法从其他报告中引用它... –
@CheshireCat从工具箱中拖放子报表并将其放置在目标报表中,然后右键单击此子报表对象(灰色)=>子报表属性,然后将名称报告“HeaderReport”例如在名称下并将此报告用作子报告文本框,并且您已完成 – Monah
我不知道“Subreport”组件!无论如何,我的报告有一个页眉,其中包含标志,标题,副标题和页面/总数。如果我理解正确,'Subreport'应该像'Panel'一样使用,它包含所有这些'TextBox'和'Image'控件。但是,如果我尝试拖动页眉内的子报表,它不会移动。我认为在报告标题中不能包含子报表... –