记录一下
在使用easyui做分页查询,对easyui自动分页查询表示一脸懵逼,上网查了各种例子,都没能够理解,最后看到有人给出他的json数据,然后自己尝试直接自己写成这样的json数据返回,结果真的可以了。话不多说,代码如下:
/**
* 实现分页查询
* @return
*/
@RequestMapping("/questToJson")
@ResponseBody
public String questToJson(){
List<Questdes> list = questdesService.queryList();
JSONArray json=JSONArray.fromObject(list);
System.out.println(json);
JSONObject json2=new JSONObject();
json2.put("rows", list);
json2.put("total", list.size());
System.out.println(json2.toString());
return json2.toString();
}
上面这是controller里的方法,返回的json数据格式是:
{"total":3,
"rows":[{"aid":1,"clicknum":12581,"img":"http://g.hiphotos.baidu.com/zhidao/pic/item/a1ec08fa513d2697479b2ffa57fbb2fb4216d8c8.jpg","questtitle":"你的心理阴暗面有多大","synopsis":"随着负面情绪的增加,每个人内心"},{"aid":2,"clicknum":12580,"img":"","questtitle":"朋友圈人格测评","synopsis":"这是一条很长的简介,大概有这么长吧!"},{"aid":3,"clicknum":0,"img":"","questtitle":"爱的方式","synopsis":"阿斯蒂芬"}]}
所谓的自动分页主要就是需要total和rows这两个属性,easyui会自动识别,做出分页。
然后就是每页显示指定行数,下面这段代码是网上copy的,直接丢进js就可以了,感觉好像有点麻烦,因为每次都要写,所以后续会想想怎么做到放在一个统一的地方,直接调用就好
if (typeof data.length == 'number' && typeof data.splice == 'function'){ // is array
data = {
total: data.length,
rows: data
}
}
var dg = $(this);
var opts = dg.datagrid('options');
var pager = dg.datagrid('getPager');
pager.pagination({
onSelectPage:function(pageNum, pageSize){
opts.pageNumber = pageNum;
opts.pageSize = pageSize;
pager.pagination('refresh',{
pageNumber:pageNum,
pageSize:pageSize
});
dg.datagrid('loadData',data);
}
});
if (!data.originalRows){
data.originalRows = (data.rows);
}
var start = (opts.pageNumber-1)*parseInt(opts.pageSize);
var end = start + parseInt(opts.pageSize);
data.rows = (data.originalRows.slice(start, end));
return data;
}
$(function(){
$('#grid').datagrid({loadFilter:pagerFilter});
});
ok