锐浪报表加载List泛型数据
个人比较喜欢使用Dapper抓取数据,该ORM抓取到的都是List泛型对象,但锐浪官方的例子都是DataTable加载记录集,所以我就写了一个List泛型加载记录集的方法,供一些和我一样的小菜参考,有问题可以拍砖,谢谢.
List泛型加载锐浪数据集
public class GridReportHelper{private struct MatchFieldPairType{public IGRField grField;public int MatchColumnIndex;}//List加载数据集public static void FillRecordToReport<T>(IGridppReport Report, List<T> listT){Type type = typeof(T); //反射类型 MatchFieldPairType[] MatchFieldPairs = new MatchFieldPairType[Math.Min(Report.DetailGrid.Recordset.Fields.Count, type.GetProperties().Length)];//根据字段名称与列名称进行匹配,建立DataReader字段与Grid++Report记录集的字段之间的对应关系int MatchFieldCount = 0;int i = 0;MemberInfo[] members = type.GetMembers();foreach (MemberInfo memberInfo in members){foreach (IGRField fld in Report.DetailGrid.Recordset.Fields){if (String.Compare(fld.Name, memberInfo.Name, true) == 0){MatchFieldPairs[MatchFieldCount].grField = fld;MatchFieldPairs[MatchFieldCount].MatchColumnIndex = i;++MatchFieldCount;break;}}++i;}Helper.StringHelper stringhelper = new StringHelper(); //定义string帮助类// 将 DataTable 中的每一条记录转储到 Grid++Report 的数据集中去foreach (T t in listT){Report.DetailGrid.Recordset.Append();for ( i = 0; i < MatchFieldCount; ++i){if (stringhelper.GetValue<T>(t, MatchFieldPairs[i].grField.Name) != null)MatchFieldPairs[i].grField.Value = stringhelper.GetValue<T>(t, MatchFieldPairs[i].grField.Name);}Report.DetailGrid.Recordset.Post();}}}
第一步: 定义Grid++Report报表主对象
private GridppReport Report = new GridppReport();
第二步:加载报表模板
Report.LoadFromFile(inifilehelper.ReadValue("ZSLablePrint", "ReportPath"));
第三步:加载报表事件
Report.PrintAsDesignPaper = true; //打印设置与设计页面一致
//连接报表取数事件
Report.FetchRecord -= new _IGridppReportEvents_FetchRecordEventHandler(ReportFetchRecord);
Report.FetchRecord += new _IGridppReportEvents_FetchRecordEventHandler(ReportFetchRecord);
Report.PrintEnd += new _IGridppReportEvents_PrintEndEventHandler(Report_PrintEnd);Report.Printer.DesignPrinterName = inifilehelper.ReadValue("ZSLablePrint", "PrinterName"); //默认打印机名称
Report.Printer.PaperName = inifilehelper.ReadValue("ZSLablePrint", "PaperName");
简要说明:
FetchRecordEventHandler事件需要先删除后再加载,是避免数据集重复加载的问题,
PrintEndEventHandler是加载打印后事件,例如打印后记录打印次数。
第四步: 报表预览
Report.PrintPreview(true);
- 附记录加载方法和打印后事件
/// <summary>
/// 动态加载list
/// </summary>
private void ReportFetchRecord()
{List<Model.AL_LablesZS> listlableszs = new List<Model.AL_LablesZS>(); Model.AL_LablesZS lableszs = new Model.AL_LablesZS(); //定义标签对象string strSQL = @"SELECT * FROM AL_LablesZS WHERE ID = @ID";lableszs = Helper.DapperHelper.GetFirstOrDefault<Model.AL_LablesZS>(strSQL, new { ID = id });int x = lableszs.FAuxQty;int y = lableszs.PackageQty;//判断打印标签数量,每次打印最多10张,避免没有更改每包数量的问题if (x/y > 10){MessageBox.Show("每次标签打印数量不能超过10张,烦请确定【每包数量】及【生产数量】");return;}int i = 0; //定义序号变量//添加数据集while (x>0){i = i + 1;Model.AL_LablesZS tmp = new Model.AL_LablesZS(); //定义标签对象tmp = Helper.ObjectHelper.TransReflection<Model.AL_LablesZS, Model.AL_LablesZS>(lableszs);tmp.FBatch2 = tmp.FBatch2 + i.ToString(); //生产批号2最后一位序号自动增加.tmp.GUID = tmp.ID.ToString() + "-" + (100 + i).ToString() + DateTime.Now.ToString("HHmmssfff") + "-" + tmp.CZFBatchNo;if (x>y) //生产数量大于包装数量{listlableszs.Add(tmp); //添加一个对象x = x - y; //添加完成后减少该包装数量continue; //继续下一循环}else{tmp.PackageQty = x; //如果不足包装数量时,则包装数量等于剩余数量listlableszs.Add(tmp);break; //退出循环}}//自动填充报表数据集Helper.GridReportHelper.FillRecordToReport<Model.AL_LablesZS>(Report, listlableszs);}
/// <summary>
/// 报表打印结束后事件
/// </summary>
private void Report_PrintEnd()
{ Model.AL_LablesZS lableszs = new Model.AL_LablesZS(); //定义标签对象string strSQL = @"UPDATE AL_LablesZS SET PrintUser = @PrintUser,PrintTime = @PrintTime,PrintCount = PrintCount + 1 WHERE ID = @ID";lableszs.ID = id; lableszs.PrintUser = Helper.DapperHelper.username.UserName; //当前用户lableszs.PrintTime = DateTime.Now;Helper.DapperHelper.ExecuteWithTrans(strSQL, lableszs);}
#endregion
锐浪报表加载List泛型数据相关推荐
- 锐浪报表 Grid++Report 导出其它格式文件
锐浪报表 Grid++Report 导出其它格式文件 Grid++Report控件设计的报表,不仅可以打印,还可以导出8种格式的报表文件. 在Grid++Report的打印浏览中,有指定导出文件的对话 ...
- 锐浪报表(Grid++Report)实现动态图片链接
使用锐浪报表配置打印模板的时候,需要链接到网络图片,拖出图片控件. 之后在初始化加载脚本里面填上下面的代码 var paraImgPath = Report.ParameterByName(" ...
- 火山PC锐浪报表使用教程4(Grid++Report)
前言: 太久没用锐浪了,如有讲的不到位的地方,请多多包含 文章里讲的太详细会比较繁琐,因此会漏掉一些细节 接续上几课代码,继续解锁新知识 第一课:点击本链接 第二课:点击本链接 第三课:点击本链接 一 ...
- 【Winform】锐浪报表使用
在发开报表时,使用了锐浪报表. 需要注意的一些细节: 1.给staticbox设置文本,通过GridppReport的变量,使用ControlByName获取到控件后进行设置文字 _report.Co ...
- FastReport报表,FastReport报表加载不出来
插件链接: Demo地址:http://pan.baidu.com/s/1dEXUvsP FastReport.Net软件地址:https://pan.baidu.com/s/1c2kNBVi 使用方 ...
- .NET 程序下锐浪报表 (Grid++ Report) 的绿色发布指南
在锐浪报表官方为 CSharp 编写的开发文档:"在C#与VB.NET中开始使用说明.txt" 中,关于发布项目是这么描述的: ★发布你的项目,用VS.NET制作安装程序: 1.先 ...
- 报表工具对比之润乾报表与锐浪报表对比
目前市场上报表工具五花八门,国内的.国外的.开源的.收费的,让人不免有眼花缭乱之感.本文将简单地从报表设计.数据处理.数据填报.数据分析.集成调用几方面对大家使用的比较多的润乾报表和锐浪报表(Grid ...
- 锐浪报表(实现打印机打印配货单功能)
一.安装锐浪报表(写的比较絮叨,见谅~ 见谅~ 希望对你有帮助) 1.网上找到安装包下载安装就行,安装之后有三个程序.Grid++Report 帮助文档(你想要的都在里面).Grid++Report ...
- 锐浪报表(悦商云B2)报表排序设置
锐浪报表(悦商云B2)报表排序设置 锐浪报表,排序打印设置: 设置方法:点击[记录集]→[行为]→[排序字段]→需要排序的字段,如果是多个字段选择[多选],如果某个字段需要倒序后面加 desc(空格+ ...
- 使用Vant框架的组件van-pull-refresh搭配van-list和van-card完成上滑加载更多列表数据,下拉刷新当前列表数据(等同于翻页功能)
<template><div class="sg-page-body"><div class="sg-list"><v ...
最新文章
- 浅析几种线程安全模型
- python3.5安装-linux安装python3.5.1
- (UVA)1586 --Molar Mass(分子量)
- Hadoop MapReduce指定yarn队列: -Dmapreduce.job.queuename
- mysql导出数据到本地_mysql怎么导出数据到本地文件
- 5 video关掉字幕选项_Photoshop 2020中英文字幕批量生成的制作方法
- 备忘录AIX主机下用SHELL脚本编写FTP传某个目录下的文件到LINUX主机
- C++入门复习指南,C++Primer读书笔记
- cc ai条码插件_科脉神秘黑科技产品横空出世,AI能为生鲜称重带来哪些变革?
- (转)MFC消息机制
- AV_PIX_FMT_YUV420P12LE’在此作用域中尚未声明
- RMI(Remote Method Invocation)原理浅析
- n个不同对象聚类为k个类别有多少种可能性? 李航博士,统计学习方法2nd.公式14.21的修正.
- 写完APDL命令流之后,如何运行TXT文件,直接生成k文件
- 毕业就去当网红?先听听8位95后网红的口述
- 2021微信红包封面免费领取最新攻略 春节免费微信红包封面序列号大全
- vue生命周期 阿星小栈
- 软考计算机专业英语,软考计算机专业英语常用词汇(首字母S)
- PADS逻辑系列含义
- CUDA编程: GPU与CPU之间使用全局统一内存的完整代码及编译
热门文章
- 小米note2鸿蒙ROM,小米note2线刷刷机教程_小米note2第三方rom线刷包_救砖刷机包
- Java lambda表达式实现List转Map
- idea p3c 自定义_扩展阿里p3c实现自定义代码规范检查
- 卷积神经网络工作原理
- nmap命令扫描存活主机
- 合并报表编制采用的理论_谈合并报表的编制理论
- 利用Visio DIY自己的示意图
- java连接hsql数据库_访问Hsql .data数据库文件
- 删除或复制文件提示:文件名无效或太长/目标路径太长/找不到该项目
- sql脚本 windows导出 linux乱码,mysql query browser中文乱码的解决方法