c# 报表练习笔记二——父子报表 + 分组 + 图片
2013-03-15 17:30
155 查看
rdlc里面,如果删除了组属性,行的属性没有分组的话,此行仅显示一行。只有行为组的情况下,行才会多行显示数据。
父子报表的重点在两个报表的数据关联上。
♠:在子报表属性的参数中加入一个参数“姓名”,参数值=“=Fields!姓名.Value”。
♠:打开子报表,在报表属性中加入一个报表参数“姓名”,这个参数与上一步设置的参数同名。
♠:在子报表中加入表格控件,表的属性中的筛选器加入“=Fields!姓名.Value”=“=Parameters!姓名.Value”。
界面的后台数据绑定关键在事件SubreportProcessing的赋值,是对子报表数据的绑定:
分组可以理解成将数据按某个关键字分组,类似与Group<string,List<object>>的结构,分组之后,相同的属性值就只有一个结果。分组+父子报表可以做出以下效果:
rdlc添加图片,
在rdlc的编辑中,从工具栏拖动“图像”到表格,“图像源...”有三个选项,“嵌入”、“外部”、“数据库”。嵌入比较简单,导入一个图像即可。“外部”则可以在显示报表的客户端指定图像的来源,图像已经生成,存储在本地或者网络。“数据库”则可以传递Base64String格式的图像数据进来。
“外部”:选择外部图像时,可以在报表中新建一个参数,例如LogoUrl,将"外部"图像的"使用此图像"指向这个参数。在cs文件里面往rdlc绑定数据时注意,加上这两行代码,绑定图像数据源,可以绑定网络数据源。
“数据库”:当图片在内存中,没必要保存到硬盘中,可以选择这种。有几点主要的:
1.将生成的bitmap转成Base64String,
2.“数据库”图像时,上步中的bitmap转bytes时,格式为Bmp,所以数据库图像的“使用此MIME类型”选择“image/bmp”。
3.将bitmap.BitmapToBase64String()传递给图像对应的表格字段就可以了。
补充一点,生成一个bitmap可以用以下代码:
留文,填充中...
父子报表的重点在两个报表的数据关联上。
♠:在子报表属性的参数中加入一个参数“姓名”,参数值=“=Fields!姓名.Value”。
♠:打开子报表,在报表属性中加入一个报表参数“姓名”,这个参数与上一步设置的参数同名。
♠:在子报表中加入表格控件,表的属性中的筛选器加入“=Fields!姓名.Value”=“=Parameters!姓名.Value”。
界面的后台数据绑定关键在事件SubreportProcessing的赋值,是对子报表数据的绑定:
using (var ds = new DataSet()) { ds.ReadXml("ReportSubRep\\SubResult.xml"); reportViewer1.ProcessingMode = ProcessingMode.Local; reportViewer1.LocalReport.ReportPath = "ReportSubRep\\ReportSubRep.rdlc"; ReportDataSource dataSource1 = new ReportDataSource("dsMain", ds.Tables["Main"]); ReportDataSource dataSource2 = new ReportDataSource("dsDetail", ds.Tables["Detail"]); reportViewer1.LocalReport.SubreportProcessing += (a, b) => b.DataSources.Add(dataSource2); reportViewer1.LocalReport.DataSources.Add(dataSource1); reportViewer1.RefreshReport(); }
分组可以理解成将数据按某个关键字分组,类似与Group<string,List<object>>的结构,分组之后,相同的属性值就只有一个结果。分组+父子报表可以做出以下效果:
rdlc添加图片,
在rdlc的编辑中,从工具栏拖动“图像”到表格,“图像源...”有三个选项,“嵌入”、“外部”、“数据库”。嵌入比较简单,导入一个图像即可。“外部”则可以在显示报表的客户端指定图像的来源,图像已经生成,存储在本地或者网络。“数据库”则可以传递Base64String格式的图像数据进来。
“外部”:选择外部图像时,可以在报表中新建一个参数,例如LogoUrl,将"外部"图像的"使用此图像"指向这个参数。在cs文件里面往rdlc绑定数据时注意,加上这两行代码,绑定图像数据源,可以绑定网络数据源。
reportViewer1.LocalReport.EnableExternalImages = true; reportViewer1.LocalReport.SetParameters(new ReportParameter("LogoUrl", "file:///" + AppDomain.CurrentDomain.BaseDirectory + "Report\\logo.png"));
“数据库”:当图片在内存中,没必要保存到硬盘中,可以选择这种。有几点主要的:
1.将生成的bitmap转成Base64String,
//Bitmap转byte[] public static byte[] BitmapToBytes(this Bitmap bitmap) { if (bitmap == null) return null; using (MemoryStream ms = new MemoryStream()) { try { bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp); //Bitmap.Save(ms, Bitmap.RawFormat); byte[] byteImage = new Byte[ms.Length]; byteImage = ms.ToArray(); return byteImage; } catch (Exception) { throw; } } } public static string BitmapToBase64String(this Bitmap bitmap) { return Convert.ToBase64String(BitmapToBytes(bitmap)); }
2.“数据库”图像时,上步中的bitmap转bytes时,格式为Bmp,所以数据库图像的“使用此MIME类型”选择“image/bmp”。
3.将bitmap.BitmapToBase64String()传递给图像对应的表格字段就可以了。
补充一点,生成一个bitmap可以用以下代码:
Point[] points = GetPoints(xy).ToArray(); Bitmap res = new Bitmap(200, 200); Graphics g = Graphics.FromImage(res); g.Clear(Color.White); g.DrawLines(Pens.Red, points);
留文,填充中...
相关文章推荐
- c# 报表练习笔记(二)——父子报表 + 分组 + 图片
- c# 报表练习笔记(一)
- c# 报表练习笔记
- Java基础知识强化之IO流笔记44:IO流练习之 复制图片的 4 种方式案例
- C#向Excel报表中插入图片的2种方法
- 【C#学习笔记】载入图片并居中
- c#学习笔记(二):保存图片、保存DataGridView数据到本地和从本地读取到DataGridView
- C#向Excel报表中插入图片的2种方法
- C#.NET验证码智能识别学习笔记---04C#.Net图片操作
- C#向Excel报表中插入图片的2种方法
- C#向Excel报表中插入图片的2种方法
- 报表练习笔记三——我的代码
- 笔记13 | 练习Volley(二)加载网络图片的三种方法
- C#中, 动态的将图片传递给ReportViewer中的报表. - 自动打印
- C#向Excel报表中插入图片的2种方法
- C# OpenCV学习笔记七之图片相似比较
- HighChats报表使用C#mvc导出本地图片
- RSS阅读器练习笔记————WebView中图片缓存
- C#向Excel报表中插入图片的2种方法【转】
- sql server 关于表中只增标识问题 C# 实现自动化打开和关闭可执行文件(或 关闭停止与系统交互的可执行文件) ajaxfileupload插件上传图片功能,用MVC和aspx做后台各写了一个案例 将小写阿拉伯数字转换成大写的汉字, C# WinForm 中英文实现, 国际化实现的简单方法 ASP.NET Core 2 学习笔记(六)ASP.NET Core 2 学习笔记(三)