图片控件
图片控件目前不能展示在线的图片,只能浏览本地图片。但是确实可以展示base64 格式图片,这样我们可以操作
base64格式
代码部分
private void Form1_Load(object sender, EventArgs e)
{
ReportParameter image = new ReportParameter("image", GetBase64ImageFromUrl("http://10.40.18.12:9000/hbl/2023/08-16/2db58eb3052032f3b363fed3574c14da.jpg"));
this.reportViewer1.LocalReport.SetParameters(new ReportParameter[]{username, image });
}
//url 转 base64
static string GetBase64ImageFromUrl(string imageUrl)
{
using (WebClient webClient = new WebClient())
{
byte[] imageBytes = webClient.DownloadData(imageUrl);
string base64Image = Convert.ToBase64String(imageBytes);
return base64Image;
}
}
rdlc部分:
1、添加报表项目“图片”
2、选中图片,右击“属性”,将参数image值转换下:
System.Convert.FromBase64String(Parameters!image.Value)
图片属性配置
使用方法转换参数
本地图片
代码中设置属性。
//确认使用外部图片
this.ReportViewer1.LocalReport.EnableExternalImages = true;
//picPath="file://D:/Design/CSharp/海宏校园自助一体机/Reports/学生成绩一览表_背景图.png";
string picPath = "file:///" + absolutePath.Replace(@"\", "/");//将路径转换为RDLC所需的格式
paras.Add(new ReportParameter("PicturePath", picPath));
rdlc部分:
数据源添加并使用
目前有三种数据源可选择
数据库 远程 对象
- 数据库默认支持sqlserver
- 远程 (待补充)
- 对象 (推荐)选择实体类绑定,灵活度高
这里默认选择对象 不过选择对象是需要注意一点 项目的架构 必须是AnyCpu 的,其中原因还没发现,只有AnyCpu才能扫描到当前项目下得所有名称空间,如果你选x86 就什么也找不到。不过你可以在AnyCpu 架构下添加好对象,切回来是没有问题的