最近自己研究了EasyUI combogrid,并实现的其分页。发现网上的资料很少,所以发一份自己的demo上来,这里只给出关键的代码。
效果:
前台JS:
$('#shopId').combogrid({
panelWidth:400,
idField:'id', //ID字段
textField:'name', //显示的字段
url:"management/commodityCheck/check_doShopsBySid",
fitColumns: true,
striped: true,
editable:true,
pagination : true,//是否分页
rownumbers:true,//序号
collapsible:false,//是否可折叠的
fit: true,//自动大小
pageSize: 10,//每页显示的记录条数,默认为10
pageList: [10],//可以设置每页记录条数的列表
method:'post',
columns:[[
{field:'name',title:'店铺名称',width:150},
{field:'registtime',title:'注册时间',width:150}
]]
});
后台Action
private int page; //当前页,名字必须为page
private int rows ; //每页大小,名字必须为rows
private Map<String, Object> typeUsers;
/**
* AJAX 分页查询所有的供货商
*/
public String findProducters() {
typeUsers=userCheckSvc.findProducters(page,rows);
return "combogridjson";
}
public Map<String, Object> getTypeUsers() {
return typeUsers;
}
public int getPage() {
return page;
}
public void setPage(int page) {
this.page = page;
}
public int getRows() {
return rows;
}
public void setRows(int rows) {
this.rows = rows;
}
service实现层
@Override
public Map<String,Object> findProducters(int page,int rows) {
Map<String,Object> result = new HashMap<String,Object>();
List<User> productList = um.queryByType(page,rows);
int count = um.totleQueryByType();
result.put("total", count);
result.put("rows", productList);
}
struts配置
<!-- 商品审核 -->
<package name="commodityCheck" extends="wsfk-management" namespace="/management/commodityCheck">
<action name="check_*" class="com.huaxin.shopping.management.commodity.CommodityCheckAction" method="{1}">
<result name="combogridjson" type="json">
<param name="root">shops</param>
</result>
</action>
</package>
总结:
1.在jquery.easyUI.js 要实现分页,必须在后台action中声明两个变量:page(当前第几页),rows(每页显示多少条信息),否者easyUI前台传递不了分页参数。这两个属性不能该名字,因为在easyUI里面定义死了。
2.返回的时候,要返回Map类型的,map结果集里面put两个属性:1.totle(总过有几页),2.rows(查询到的结果集)