2016-09-07 96 views
0

想象一下,如果数据集中包含与报告绑定的数据 - 工作得很好。动态图像和数据绑定

现在,我想添加到另一个数据集动态或动态参数。这些参数或数据集将包含图像。图像是在一个字节数组中。

生成时,我无法让它们显示在RDLC报告中。

这是我迄今所做:

  • 获取byte []数组,在代码,从外部源(网址)
  • 图像的字节[]数组转换为Base64String
  • 添加为ReportParameter

然后在RDLC,我增加该参数,然后添加的图像控制。 然后为图像盒/控制,该值我将它设置为以下:

  • = System.Convert.FromBase64String(!参数TheImage.Value)

但是我只是得到呈现的图像的“X”就好像没有找到图像,但它绝对存在。

代码呈现报表或多或少以下(仅粘贴进口位):

using (var rv = new ReportViewer()) 
      { 
       rv.ProcessingMode = ProcessingMode.Local; 
       rv.Reset(); 
using (var sr = new System.IO.StreamReader(@"C:\MyReport.rdlc")) 
       { 
        rv.LocalReport.LoadReportDefinition(sr); 
rv.LocalReport.EnableExternalImages = true;   
        var 

reportParameters = new List<ReportParameters>(); 
reportParameters.Add(new ReportParameter("TheImage", Convert.ToBase64String(TheExternalImage.Image); 
rv.LocalReport.SetParameters(reportParameters); 

string mimeType; 
        string encoding; 
        string fileExtension; 
        string[] streamIds; 
        Warning[] warnings; 
        var streambytes = rv.LocalReport.Render(format.ToString(), null, out mimeType, out encoding, out fileExtension, out streamIds, out warnings); 
        rv.LocalReport.ReleaseSandboxAppDomain(); 
} 
} 

任何想法,我要去的地方错了吗?

回答

2

这样做将您的图像字节数组转换为基本64字符串并将该字符串传递给参数(您已经这样做)。然后将图像设置为数据库的源,并确保在图像字段上正确设置MIME类型,然后使用参数作为源。

很可能是将图像源设置为缺少的数据库。

enter image description here

+0

谢谢 - 问题是图像不是来自数据库。它是从外部来源传入RDLC的。 MIME类型已正确设置。 –

+0

好的,经过测试 - 它工作!谢谢!! –