数据列表合计功能 === 进行数据的列表展示时,为数据显示合计数是一个很有用的功能,在jeecg 的datagrid中实现该功能的效果如图12-4所示。 ![](https://img.kancloud.cn/ca/71/ca71a86310b7f1b4b47632ec0d9bb030_555x261.png) 图12-4列表数据合计效果图 该功能的实现,主要是通过在加载datagrid的数据时,统计出所需的合计值,并放在datagrid对象的footer中。示例代码如下: ``` 1 @RequestMapping(params = "datagrid") 2 publicvoid datagrid(JeecgDemo jeecgDemo,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) { 3 CriteriaQuery cq = new CriteriaQuery(JeecgDemo.class, dataGrid); 4 //查询条件组装器 5 org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, jeecgDemo); 6 String ctBegin = request.getParameter("createTime_begin"); 7 String ctEnd = request.getParameter("createTime_end"); 8 if(StringUtil.isNotEmpty(ctBegin)&& StringUtil.isNotEmpty(ctEnd)){ 9 try { 10 cq.ge("createTime", new SimpleDateFormat("yyyy-MM-dd").parse(ctBegin)); 11 cq.le("createTime", new SimpleDateFormat("yyyy-MM-dd").parse(ctEnd)); 12 } catch (ParseException e) { 13 e.printStackTrace(); 14 } 15 cq.add(); 16 } 17 this.jeecgDemoService.getDataGridReturn(cq, true); 18 //update-begin--Author:zhaojunfu Date:20130520 for:TASK #109 datagrid标签没有封装合计功能 19 String total_salary = String.valueOf(jeecgDemoService.findOneForJdbc("select sum(salary) as ssum from jeecg_demo").get("ssum")); 20 /* 21 * 说明:格式为 字段名:值(可选,不写该值时为分页数据的合计) 多个合计 以 , 分割 22 */ 23 dataGrid.setFooter("salary:"+total_salary+",age,email:合计"); 24 //update-end--Author:zhaojunfu Date:20130520 for:TASK #109 datagrid标签没有封装合计功能 25 TagUtil.datagrid(response, dataGrid); 26 } ``` 在该示例代码中,需要重点注意的是这里的第23行: ``` dataGrid.setFooter("salary:"+total_salary+",age,email:合计"); ``` setFooter()方法接收一个字符串,其格式为s:字段名[:值],其中值为选填项,填了则使用给定的值,没填则自动统计分页合计,示例: ``` salary:35.00,age,email:合计 ``` 这里将salary的合计值通过查询数据库得出,而age则通过当前分页数据自动合计,email给定一个值“合计”,其作用是在datagrid对应于email列的下方显示一个说明信息。