有谁知道如何获取保存在数据库中的 AI 图像并将其显示在 ReportViewer 2008 上?
谢谢!!
有谁知道如何获取保存在数据库中的 AI 图像并将其显示在 ReportViewer 2008 上?
谢谢!!
我目前正在这样做,但是,这并不容易实现。
我创建了一个在 MemoryStream 中生成 RDLC 文件的类。RDLC 内存流被发送到 reportViewer 控件,该控件依次显示报表。
在生成 RDLC 文件期间,您可以创建嵌入图像。为此,我将图像检索到 Byte 数组中,然后将 Byte 数组转换为 Base64 编码。RDLC 文件需要 Base64 编码才能正确显示图像。
同样,这并不容易实现,所以你真的需要这样做才能实现它。如果您想继续使用此方法,我可以为您提供更多详细信息。
编辑(更多细节)
您可以在GotReportViewer获得一些关于如何动态创建 RDLC 文件的示例代码。直接链接到VB.NET和C#的代码。
如果您能够设法弄清楚该代码的工作原理,您将能够生成 RDLC 文件,而无需自己手动创建文件。再次,我需要强调一个事实,即您将进行很多修改才能到达您想要的位置。
现在,为了生成图像,从数据库中检索它。当您从数据库中取回它时(我使用 BLOB),您将获得一个 Byte 数组。Byte 数组保存图像的数据,但 I 不能在其当前状态下使用。要转换它,您可以执行以下操作:
Dim output As String = ""
output = Convert.ToBase64String(imgByteArray)
生成的输出字符串将与 ReportViewer 兼容。现在您可以将此字符串动态添加到 ReportViewer 的 RDLC 文件(XML 文件)中。使用 GotReportViewer 中的代码示例,您可以执行以下操作:
'Inserts embedded images into the report
Overridable Function CreateEmbeddedImages() As Rdl.EmbeddedImagesType
Dim bgCell As New Rdl.EmbeddedImageType
Dim images As New Rdl.EmbeddedImagesType
bgCell.Name = "bgTableHeader"
bgCell.Items = New Object() {"image/jpeg", output}
bgCell.ItemsElementName = New Rdl.ItemsChoiceType35() {Rdl.ItemsChoiceType35.MIMEType, Rdl.ItemsChoiceType35.ImageData}
images.EmbeddedImage = New Rdl.EmbeddedImageType() {bgCell}
Return images
End Function
RDL 类型是报表定义语言类文件。基本上,它是一个反向工程的 RDLC XSD Schema。它包含将用于为您的报告生成有效 XML 文件的类。它包含在顶部的 GotReportViewer 链接中,但您可以使用 Visual Studio 提供的 XSD.EXE 工具自己生成一个。