Mik*_*e L 17 .net reporting image reporting-services
我正在使用与Visual Studio 2010捆绑在一起的客户端报告功能.我已经定义了一个RDLC文件,目前在报告的顶部有用于品牌推广的嵌入式图像.图像是用户公司的徽标.它与报告数据没有任何关系......它只是一个标题.
我希望能够打破嵌入图像的依赖性,因为我开始不得不扩展应用程序.相反,我希望能够动态设置图像.不幸的是,没有参数类型似乎支持这一点.
我已经看过将源从嵌入式切换到外部,并且可能在程序启动时发出徽标的图像文件(徽标作为资源嵌入到单独的程序集中),然后将其称为一般命名的文件.资源.我不确定我有多喜欢这个选项,因为它似乎是一个黑客.在测试显式设置路径图像时,我也会收到错误,有效地说该对象未设置为实例.例如,我甚至试图将它设置为D:\ test.jpg,并在设计时得到错误...所以我更不愿意尝试这个选项.
我还看过在RDLC文件中调用引用程序集中的类,但我似乎无法让它工作.看起来我可以引用一个程序集,然后通过一个名为Code的特殊对象进行调用.因为我的类是静态的,它应该是Code.className.method,但这似乎不起作用.
我也考虑过将标题分成子报告,但我仍然认为我没有解决我的依赖问题.它仍然需要相同的维护量.
我应该提一下,我正在使用对象作为我的数据源.我应该选择什么选择?我错过了一些明显的东西吗
Mik*_*e L 24
由于没有关于这个问题的备选(或任何!)意见,我已经进一步推进并提出了一个有效的解决方案.
我选择创建徽标的按需文件,将其存储在临时位置.如果文件不存在,我会动态创建它.如果确实存在,我只是引用确实存在的图像.
在RDLC报告中,我创建了一个名为Path of Text的参数.接下来,在Image的属性中,我将徽标图像从嵌入更改为外部,并将"使用此图像"设置为参数:[@ Path].
然后,在代码中我将文件路径作为Path参数传递.但我以前出错的地方是路径必须是一个URL,我一直试图通过磁盘上的位置.所以,那部分应该是这样的:
ReportParameter paramLogo = new ReportParameter();
paramLogo.Name = "Path";
paramLogo.Values.Add(@"file:///C:\Users\Mike\AppData\Local\Temp\Logo.png");
reportViewer.LocalReport.SetParameters(paramLogo);
Run Code Online (Sandbox Code Playgroud)
我会说MSDN文档可能会好一些.值得称道的是,有许多关于如何在更高层次上完成某些事情的详细文件.这篇文章有帮助.它清楚地说我需要一个路径的URL,但是直接在库中检查该属性会更容易.但是,找到较低级别的文档更难,效果也更差.以下是Reporting Image对象的文章.没有太多机会设置感兴趣的属性.
小智 12
我遇到了同样的问题,但是接受的解决方案并不适合我.事实证明,除了提供URI格式的路径并将Image.Value设置为之外,我还需要将EnableExternalImages设置为true =Parameters!ReportLogo.Value.
report.EnableExternalImages = true;
ReportParameter[] parameters = new ReportParameter[3];
...
Uri pathAsUri = new Uri(_info.LogoPath);
parameters[2] = new ReportParameter("ReportLogo", pathAsUri.AbsoluteUri);
report.SetParameters(parameters);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
39957 次 |
| 最近记录: |