ReportViewer WPF - 动态设置图像

时间:2012-04-01 12:42:26

标签: wpf image reportviewer

我想在运行时(动态)将图像加载到我的报告中(在标题内)。

我已经创建了以下参数:

Name: Path
Datatype: String (should be the path to the image)
Allow Blank = True

然后我把图像控件拖到我的报告中。 将名称设置为:Image2 Imagesource:外部 使用以下图像:[@ Path]

现在(回到我的MainWindow)我添加了以下代码:

        viewerInstance.LocalReport.EnableExternalImages = true;
        List<ReportParameter> param1 = new List<ReportParameter>();
        //header_2.png exists (for test purposes) in the root folder
        param1.Add(new ReportParameter("Path", @"/header_2.png"));
        viewerInstance.LocalReport.SetParameters(param1);

它不起作用。 我会收到此错误消息:

在类型“ReportViewer.MainWindow”上调用与指定绑定约束匹配的构造函数会引发异常。 {“尚未指定报告定义的来源”}

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我不太确定如何使用SSRS 2008中的绝对路径使用外部图像。但我想我可以提供一种解决方法,但这只有在您拥有所有将要使用的图像的情况下才有效在事先为您提供的报告中。

您可以将Image控件添加到报表中。在“图像控制”属性中,提供名称,选择“图像源”作为“嵌入”,然后单击“导入”,然后选择图像。单击导入。图像已导入。现在您可以导入这样的所有图像。完成后,再次转到Image control属性并将Use this Image设置为“[@Path]”。现在,您无需传递绝对路径,只需传递导入图像中的图像名称,您可以在报告数据中的图像下看到这些图像。

此外,如果您想使用外部图片,则根据this msdn article,您需要为图片提供网址,而不是绝对路径。在这种情况下,您可以在服务器上提升图像并在Path参数中传递路径。选择图像源为外部。我已经测试了这个并且它可以工作。

编辑:您还可以通过报表管理器将图像上传到ReportServer,并在将图像源指定为外部后,将该图像的路径提供为RDL中的相对路径。的 e.g。 /Report/Logo.png 即可。您还可以上传多个图像,并通过将路径作为参数提供给报告。