jueyue 发表于 2013-7-12 21:25:44

用<t:datagrid做统计

想做一个分页table.看datagrid 已经写的比较好了,所以想复用下,而且datagrid的分页比较好用啊,但是现在demo都是给的单个类的增删查改,这个我们首先要看看这个datagrid生产的源码TagUtil.datagrid(response, dataGrid);//这个大家应该都不陌生,这个就是向前台输出的,
然后进入listtojson方法,有这个一段values = fieldNametoValues(fieldName, list.get(j));//利用反射获取值.大家可以仔细看看if(list.get(j) instanceof Map){
                                        values = ((Map)list.get(j)).get(fieldName);
                              }else{
                                        values = fieldNametoValues(fieldName, list.get(j));
                              }加上对map的支持,这样我们只要返回map就可以处理了,这样我们只要模仿datagrid来写就可以了如:<span style="line-height: 1.5;">前台页面</span> <t:datagrid name="statisticalProduct" title="购物车" actionUrl="statisticalController.do?productCount" idField="id" fit="true">
    <t:dgCol title="编号" field="id" hidden="false"></t:dgCol>
   <t:dgCol title="产品名称" field="name" width="200"></t:dgCol>
   <t:dgCol title="销售量" field="count" width="200"></t:dgCol>
   <t:dgCol title="销售额" field="sumPrice" ></t:dgCol>
   <t:dgToolBar title="详情" icon="icon-edit" url="shoppingCartController.do?addorupdate" funname="update"></t:dgToolBar>
</t:datagrid>dataGrid.setTotal(allCounts);
                criteria.createAlias("product", "product");
                criteria.setProjection(Projections.projectionList()
                              .add(Projections.property("product.id"), "id")
                              .add(Projections.groupProperty("product.id"))
                              .add(Projections.property("product.productName"), "name")//这里来设置别名--和前台对应
                              .add(Projections.count("product.id"),"count")
                              .add(Projections.sum("price"), "sumPrice"))
                              .addOrder(dataGrid.getOrder().name() == "asc"?Order.asc(dataGrid.getSort()):Order.desc(dataGrid.getSort()))
                              .setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP)//这里确定返回的是map
                              .setMaxResults(dataGrid.getRows())
                              .setFirstResult(dataGrid.getPage()*dataGrid.getRows());
                dataGrid.setReaults(criteria.list());
                return dataGrid;

GIN 发表于 2013-7-13 16:43:46

牛人啊!膜拜
页: [1]
查看完整版本: 用<t:datagrid做统计