关注JEECG发展历程 关注最新动态和版本, 记录JEECG成长点滴 更新日志 - 技术支持 - 招聘英才

JEECG最新版本下载 JEECG智能开发平台 - 显著提高开发效率 常见问题 - 入门视频 - 参与开源团队

商务QQ: 69893005、3102411850 商务热线(5*8小时): 010-64808099 官方邮箱: jeecgos@163.com

查看: 10905|回复: 1

用<t:datagrid做统计

[复制链接]
发表于 2013-7-12 21:25:44 | 显示全部楼层 |阅读模式
想做一个分页table.看datagrid 已经写的比较好了,所以想复用下,而且datagrid的分页比较好用啊,但是现在demo都是给的单个类的增删查改,这个我们首先要看看这个datagrid生产的源码
  1. TagUtil.datagrid(response, dataGrid);//这个大家应该都不陌生,这个就是向前台输出的,
复制代码
然后进入listtojson方法,有这个一段
  1. values[i] = fieldNametoValues(fieldName, list.get(j));//利用反射获取值.大家可以仔细看看
复制代码
  1. if(list.get(j) instanceof Map){
  2.                                         values[i] = ((Map)list.get(j)).get(fieldName);
  3.                                 }else{
  4.                                         values[i] = fieldNametoValues(fieldName, list.get(j));
  5.                                 }
复制代码
加上对map的支持,这样我们只要返回map就可以处理了,这样我们只要模仿datagrid来写就可以了如:
  1. <span style="line-height: 1.5;">前台页面</span> <t:datagrid name="statisticalProduct" title="购物车" actionUrl="statisticalController.do?productCount" idField="id" fit="true">
  2.     <t:dgCol title="编号" field="id" hidden="false"></t:dgCol>
  3.    <t:dgCol title="产品名称" field="name" width="200"></t:dgCol>
  4.    <t:dgCol title="销售量" field="count" width="200"></t:dgCol>
  5.    <t:dgCol title="销售额" field="sumPrice" ></t:dgCol>
  6.    <t:dgToolBar title="详情" icon="icon-edit" url="shoppingCartController.do?addorupdate" funname="update"></t:dgToolBar>
  7.   </t:datagrid>
复制代码
  1. dataGrid.setTotal(allCounts);
  2.                 criteria.createAlias("product", "product");
  3.                 criteria.setProjection(Projections.projectionList()
  4.                                 .add(Projections.property("product.id"), "id")
  5.                                 .add(Projections.groupProperty("product.id"))
  6.                                 .add(Projections.property("product.productName"), "name")//这里来设置别名--和前台对应
  7.                                 .add(Projections.count("product.id"),"count")
  8.                                 .add(Projections.sum("price"), "sumPrice"))
  9.                                 .addOrder(dataGrid.getOrder().name() == "asc"?Order.asc(dataGrid.getSort()):Order.desc(dataGrid.getSort()))
  10.                                 .setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP)//这里确定返回的是map
  11.                                 .setMaxResults(dataGrid.getRows())
  12.                                 .setFirstResult(dataGrid.getPage()*dataGrid.getRows());
  13.                 dataGrid.setReaults(criteria.list());
  14.                 return dataGrid;
复制代码
发表于 2013-7-13 16:43:46 | 显示全部楼层
牛人啊!膜拜
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表