个人比较喜欢使用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泛型数据相关推荐

  1. 锐浪报表 Grid++Report 导出其它格式文件

    锐浪报表 Grid++Report 导出其它格式文件 Grid++Report控件设计的报表,不仅可以打印,还可以导出8种格式的报表文件. 在Grid++Report的打印浏览中,有指定导出文件的对话 ...

  2. 锐浪报表(Grid++Report)实现动态图片链接

    使用锐浪报表配置打印模板的时候,需要链接到网络图片,拖出图片控件. 之后在初始化加载脚本里面填上下面的代码 var paraImgPath = Report.ParameterByName(" ...

  3. 火山PC锐浪报表使用教程4(Grid++Report)

    前言: 太久没用锐浪了,如有讲的不到位的地方,请多多包含 文章里讲的太详细会比较繁琐,因此会漏掉一些细节 接续上几课代码,继续解锁新知识 第一课:点击本链接 第二课:点击本链接 第三课:点击本链接 一 ...

  4. 【Winform】锐浪报表使用

    在发开报表时,使用了锐浪报表. 需要注意的一些细节: 1.给staticbox设置文本,通过GridppReport的变量,使用ControlByName获取到控件后进行设置文字 _report.Co ...

  5. FastReport报表,FastReport报表加载不出来

    插件链接: Demo地址:http://pan.baidu.com/s/1dEXUvsP FastReport.Net软件地址:https://pan.baidu.com/s/1c2kNBVi 使用方 ...

  6. .NET 程序下锐浪报表 (Grid++ Report) 的绿色发布指南

    在锐浪报表官方为 CSharp 编写的开发文档:"在C#与VB.NET中开始使用说明.txt" 中,关于发布项目是这么描述的: ★发布你的项目,用VS.NET制作安装程序: 1.先 ...

  7. 报表工具对比之润乾报表与锐浪报表对比

    目前市场上报表工具五花八门,国内的.国外的.开源的.收费的,让人不免有眼花缭乱之感.本文将简单地从报表设计.数据处理.数据填报.数据分析.集成调用几方面对大家使用的比较多的润乾报表和锐浪报表(Grid ...

  8. 锐浪报表(实现打印机打印配货单功能)

    一.安装锐浪报表(写的比较絮叨,见谅~ 见谅~ 希望对你有帮助) 1.网上找到安装包下载安装就行,安装之后有三个程序.Grid++Report 帮助文档(你想要的都在里面).Grid++Report ...

  9. 锐浪报表(悦商云B2)报表排序设置

    锐浪报表(悦商云B2)报表排序设置 锐浪报表,排序打印设置: 设置方法:点击[记录集]→[行为]→[排序字段]→需要排序的字段,如果是多个字段选择[多选],如果某个字段需要倒序后面加 desc(空格+ ...

  10. 使用Vant框架的组件van-pull-refresh搭配van-list和van-card完成上滑加载更多列表数据,下拉刷新当前列表数据(等同于翻页功能)

    <template><div class="sg-page-body"><div class="sg-list"><v ...

最新文章

  1. 浅析几种线程安全模型
  2. python3.5安装-linux安装python3.5.1
  3. (UVA)1586 --Molar Mass(分子量)
  4. Hadoop MapReduce指定yarn队列: -Dmapreduce.job.queuename
  5. mysql导出数据到本地_mysql怎么导出数据到本地文件
  6. 5 video关掉字幕选项_Photoshop 2020中英文字幕批量生成的制作方法
  7. 备忘录AIX主机下用SHELL脚本编写FTP传某个目录下的文件到LINUX主机
  8. C++入门复习指南,C++Primer读书笔记
  9. cc ai条码插件_科脉神秘黑科技产品横空出世,AI能为生鲜称重带来哪些变革?
  10. (转)MFC消息机制
  11. AV_PIX_FMT_YUV420P12LE’在此作用域中尚未声明
  12. RMI(Remote Method Invocation)原理浅析
  13. n个不同对象聚类为k个类别有多少种可能性? 李航博士,统计学习方法2nd.公式14.21的修正.
  14. 写完APDL命令流之后,如何运行TXT文件,直接生成k文件
  15. 毕业就去当网红?先听听8位95后网红的口述
  16. 2021微信红包封面免费领取最新攻略 春节免费微信红包封面序列号大全
  17. vue生命周期 阿星小栈
  18. 软考计算机专业英语,软考计算机专业英语常用词汇(首字母S)
  19. PADS逻辑系列含义
  20. CUDA编程: GPU与CPU之间使用全局统一内存的完整代码及编译

热门文章

  1. 小米note2鸿蒙ROM,小米note2线刷刷机教程_小米note2第三方rom线刷包_救砖刷机包
  2. Java lambda表达式实现List转Map
  3. idea p3c 自定义_扩展阿里p3c实现自定义代码规范检查
  4. 卷积神经网络工作原理
  5. nmap命令扫描存活主机
  6. 合并报表编制采用的理论_谈合并报表的编制理论
  7. 利用Visio DIY自己的示意图
  8. java连接hsql数据库_访问Hsql .data数据库文件
  9. 删除或复制文件提示:文件名无效或太长/目标路径太长/找不到该项目
  10. sql脚本 windows导出 linux乱码,mysql query browser中文乱码的解决方法