我有远程服务器中的图像列表,我需要在现有报告中显示其中的一些图像。我尝试将图像控件放到rdlc上,它适用于单个图像。
但是我需要显示多个图像,没有固定的数量。
我在下面的帖子中提到过,但没有一个是明确的:
C# - Add List of images to report viewer
Insert unknown number of Images to the report at runtime using reportviewer
http://www.c-sharpcorner.com/blogs/6194/display-image-in-rdlc-report-microsoft-report-viewer.aspx%27
我知道此请求可能存在重复,如果有,请引导我。
答案 0 :(得分:2)
我首先在现有报告中添加一个表格,如上面提到的那样,删除了不必要的列,然后在rdlc设计中的左侧单元格中添加了一个图像。在图像属性中将源设置为“外部”
现在在xml视图中打开rdlc,找到数据集标记,为带有图像的新表添加新数据集
<DataSet Name="DataSet1">
<Fields>
<Field Name="filepath">
<DataField>track_file_id_pk</DataField>
<rd:TypeName>System.string</rd:TypeName>
</Field>
</Field>
</Fields>
<Query>
<DataSourceName>xxxt</DataSourceName>
<CommandText>/* Local Query */</CommandText>
</Query>
<rd:DataSetInfo>
<rd:DataSetName>xxx</rd:DataSetName>
...
</rd:DataSetInfo>
</DataSet>
现在将图像列表数据集添加到新表中,如下所示
<Tablix Name="Tablix2">
....
</TablixRowHierarchy>
<DataSetName>ImgDataSet</DataSetName>
返回rdlc的设计视图,转到图像属性,设置“使用此图像”字段
在创建具有一列“filepath”的数据表后面的代码中,添加带有图像文件路径的行 然后在现有数据源下面添加数据源以报告。
DataTable dtable = new DataTable();
DataColumn dcol = new DataColumn("filepath");
dtable.Columns.Add(dcol);
DataRow drow = dtable.NewRow();
string pat = new Uri(Server.MapPath("~/Content/DSC_019.jpg")).AbsoluteUri;
drow["track_file_uuidName"] = pat;
dtable.Rows.Add(drow);
...
ReportViewer1.LocalReport.EnableExternalImages = true;
...
ReportViewer1.LocalReport.DataSources.Clear();
ReportViewer1.LocalReport.DataSources.Add(new ReportDataSource("rptDataSet", objCommonreport.ReportTable));
ReportViewer1.LocalReport.DataSources.Add(new ReportDataSource("DataSet1", dtable));
答案 1 :(得分:0)
我做了以下操作,以显示矩阵中包含未知项目数的图像列表。
首先创建一个只有一个字段的数据集,你可以随心所欲,我把它命名为#34; filepath&#34;和数据集的名称是&#34; DataSet5&#34;。您可以更改名称并相应地使用它。
然后你需要添加一个表,删除不必要的行和列,这样你只剩下1列和行(1x1)矩阵。在该列中插入图像,立即设置其属性。图像源应该是EXTERNAL。
在报告的aspx.cs文件中,从数据库中获取图像的路径,现在获取这些图像的绝对路径并附加&#34; file:///&#34;因为报告需要显示文件。我确实喜欢这个:
string rel_Path = HttpContext.Current.Server.MapPath("~");
if (_articleOrders.Any())
{
foreach (ArticleOrder order in _articleOrders)
{
if (!string.IsNullOrEmpty(order.ArticleImage))
{
if (File.Exists(rel_Path + "\\" + order.ArticleImage))
{
var AIpath = "file:///" + rel_Path + "\\" + order.ArticleImage;
articleImagesList.Add(AIpath);
}
}
}
CreateDatasetForImages(articleImagesList);
}
然后我将数据添加到数据集中,如下所示:
private void CreateDatasetForImages(List<string> articleImagesList)
{
DataTable table = new DataTable();
table.Columns.Add("filepath", typeof(string));
foreach (string articleImage in articleImagesList)
{
DataRow drow = table.NewRow();
string pat = articleImage;
drow["filepath"] = pat;
table.Rows.Add(drow);
}
FlowerBookingReportViewer.LocalReport.DataSources.Add(new ReportDataSource("DataSet5", table));
}
现在再次转到图像属性并设置&#34;使用此图像&#34;到[filepath],因为它是我们数据集中保存图像路径的列的名称。希望它适用于某人!