2012-04-01 26 views
1

我想在运行时(动态)将图像加载到我的报表(标题内)中。ReportViewer WPF - 动态设置图像

我已经创建下列参数:

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

然后我draged和DROP掉的图像控制我的报告。 设置名称:镜像2 的ImageSource:外部 使用以下图片:[@Path]

现在(在我的主窗口后)我已经添加以下代码:

 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

我不是很确定如何使用SSRS 2008中的绝对路径使用外部图像来做到这一点。但我想我可以提供一种解决方法,但这只会在您拥有所有图像时才起作用在事先向您提供的报告中使用。

您可以将图像控件添加到报告中。在Image Control属性中,提供名称,选择图像源为Embedded,然后单击Import,然后选择图像。点击导入。图像被导入。现在你可以像这样导入所有图像。完成后,再次转到图像控制属性并将此图像设置为“[@Path]”。现在,您不需要传递绝对路径,只需要在报告数据中的图像下可以看到的导入图像中显示图像名称。

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

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