动态图像和数据绑定
Dynamic images and databinding
假设有一个包含绑定到报表的数据的数据集 - 工作得很好。
现在,我想动态添加到另一个数据集或动态参数。这些参数或数据集将包含图像。图片在字节数组中。
我无法让它们在生成时显示在 RDLC 报告中。
这是我目前所做的:
- 在代码中从外部源(a URL)获取byte[]数组
- 将图片的byte[]数组转为Base64String
- 将其添加为 ReportParameter
然后在RDLC里面,我加了这个参数,然后加了一个图片控件。
然后对于这张图片 box/control,我将其设置为以下值:
- =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();
}
}
我哪里出错了?
为此,将您的图像字节数组转换为 base 64 字符串并将该字符串传递给参数(您已经在这样做)。然后将图像设置为将其源设置为数据库,并确保在图像字段上正确设置 MIME 类型,然后使用参数作为源。
很可能是将图像源设置为您丢失的数据库。
假设有一个包含绑定到报表的数据的数据集 - 工作得很好。
现在,我想动态添加到另一个数据集或动态参数。这些参数或数据集将包含图像。图片在字节数组中。
我无法让它们在生成时显示在 RDLC 报告中。
这是我目前所做的:
- 在代码中从外部源(a URL)获取byte[]数组
- 将图片的byte[]数组转为Base64String
- 将其添加为 ReportParameter
然后在RDLC里面,我加了这个参数,然后加了一个图片控件。 然后对于这张图片 box/control,我将其设置为以下值:
- =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();
}
}
我哪里出错了?
为此,将您的图像字节数组转换为 base 64 字符串并将该字符串传递给参数(您已经在这样做)。然后将图像设置为将其源设置为数据库,并确保在图像字段上正确设置 MIME 类型,然后使用参数作为源。
很可能是将图像源设置为您丢失的数据库。