首页> C#>如何共享和嵌入式图像在许多RDLC报告
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了首页> C#>如何共享和嵌入式图像在许多RDLC报告,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2808字,纯文字阅读大概需要5分钟。
内容图文
我创建了一个MDI应用程序,该应用程序在不同的子窗体上显示了一些DataGridView,这些子窗体被视为单独的应用程序,因为它们可以访问不同的数据库.
这些数据需要导出为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或路径(我要执行的操作).
>“数据库”:指定包含图像的数据库字段.
通过使用“ folder.filename”语法将Reports.dll库用作源,可以将.rdlc文件引用并加载到ReportViewer窗口中.
/*
* 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();
因此,如果我想创建一个包含图像的文件夹:
>我应该放在哪里,可以确定该文件夹是与主项目的输出一起生成的?
>如何在调试模式和释放模式下都保留对文件夹和图像的引用,以便何时将程序安装在用户客户端中?
解决方法:
您可以执行以下操作
在报表的图像属性中
>图片来源:嵌入式
>单击导入按钮并加载图像
通过这种方式,RDLC会将图像保存为rdlc文件中的base64,您可以通过从解决方案资源管理器窗格中使用xml编辑器打开视图进行查看,而无需担心图像的位置.
例如,如果要从数据库加载图像,可以执行以下另一种方法
>图片来源:数据库
>使用此字段:[YourPropertyName]
>使用此MIME类型:image / jpeg
>在报告数据集中,添加一个byte []列或名为YourPropertyName的属性
最后要注意的是,如果徽标在您拥有的所有报告中都是通用的,则建议添加包含此徽标的称为标题的子报表,并将其放在您拥有的每个报告中,这样,如果您以后要更改徽标,则只需要在该标头子报表中进行更改.
您可以查看此demo,我准备向您展示如何实现此目的(向当前报告中添加标题报告)
希望这个能对您有所帮助
内容总结
以上是互联网集市为您收集整理的首页> C#>如何共享和嵌入式图像在许多RDLC报告全部内容,希望文章能够帮你解决首页> C#>如何共享和嵌入式图像在许多RDLC报告所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。