|
想做一个分页table.看datagrid 已经写的比较好了,所以想复用下,而且datagrid的分页比较好用啊,但是现在demo都是给的单个类的增删查改,这个我们首先要看看这个datagrid生产的源码- TagUtil.datagrid(response, dataGrid);//这个大家应该都不陌生,这个就是向前台输出的,
复制代码 然后进入listtojson方法,有这个一段- values[i] = fieldNametoValues(fieldName, list.get(j));//利用反射获取值.大家可以仔细看看
复制代码- if(list.get(j) instanceof Map){
- values[i] = ((Map)list.get(j)).get(fieldName);
- }else{
- values[i] = 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;
复制代码 |
|