2009-07-18 108 views
2

我需要帮助动态地在ReportViewer中添加图像徽标。我从数据库获取该图像,将其转换为Base64,然后我需要将其添加到的ReportViewer ...接下来这段代码:如何动态地将图片徽标添加到ReportViewer参数?

rpViewer.LocalReport.EnableExternalImages = true; 

     Company _company = db.Companys.Where(c => c.codCompany == c.codCompany).Single(); 

     //first step 
     byte[] img = _company.imagem.ToArray(); // i get image from db 
     MemoryStream _ms = new MemoryStream(img); 

     string logo = Convert.ToBase64String(img); //convert to base64 

     // 2 step 
     List<ReportParameter> lstReportParams = new List<ReportParameter>();//Create params 
     lstReportParams.Add(new ReportParameter("Logo", logo)); 
     lstReportParams.Add(new ReportParameter("LogoMimeType", "image/png")); 

     // Doesn't work here (see error below) 
     this.rpViewer.LocalReport.SetParameters(lstReportParams); 

     this.rpViewer.RefreshReport(); 

错误:

{"An error occurred during local report processing."}
{"An attempt was made to set a report parameter 'Logo' that is not defined in this report."}

在Rldc:

MIMEType =Parameters!LogoMimeType.value 
Value ="System.Convert.FromBase64String(Parameters!Logo.Value)" 

它为什么不起作用?

为什么不识别参数?

我可以在ReportViewer中加载该图像。

回答

1

错误消息说你还没有定义报告参数Logo。此报告参数是否已定义?

您也可以运行与您发送英寸

我们有一个类似的问题,与需要显示不同的图像的报告参数的大小问题。在我们的情况下,只有大约10张图像。

我们解决它的方法是将所有图像放在报告上,然后根据参数将它们设置为可见或不可见。

+0

嗨, 我需要拍一张db中的图片,这是公司的标志,并在报告中显示。 RLDC中的这个参数可以吗? MIMEType =参数!LogoMimeType.value值 Value =“System.Convert.FromBase64String(Parameters!Logo.Value)” 谢谢.. – user95542 2009-07-19 16:39:24

2

您的RDLC文件需要创建Logo参数,以便您的参数列表能够被您的报告重新识别。

您需要编辑RDLC文件并创建一个参数。您可以通过在Visual Studio中打开RDLC文件,然后在文件菜单中单击报告并选择报告参数来完成此操作。