layui的默认排序只排序当前页,如何给所有的数据排序呢?
首先在table实例中关闭自动排序
接下来就是自己设定排序规则:
//监听排序 设置排序规则
table.on('sort(test)', function(obj){
table.reload('a', {
initSort: obj //记录初始排序
, where: {
field: obj.field //排序字段
, order: obj.type //排序方式
}
});
});
这里的a为table实例的id,test为lay-filter
为了方便偷下懒,写个测试
@RequestMapping("/queryStudent")
public Map<String,Object> QueryStudent(@RequestParam(required=false,defaultValue="1")int limit, @RequestParam(required=false,defaultValue="1")int page,Student student,String field,String order){
System.out.println(field);
System.out.println(order);
Page<Student> page1=new Page(page,limit);
QueryWrapper<Student> queryWrapper = new QueryWrapper();
String name = student.getName();
String time = student.getTime();
Integer status = student.getStatus();
if (!StringUtils.isEmpty(name)){
queryWrapper.like("name",name);
}
if (!StringUtils.isEmpty(time)){
queryWrapper.eq("time",time);
}
if (!StringUtils.isEmpty(field) && !StringUtils.isEmpty(order)){
if("asc".equals(order)){
queryWrapper.orderByAsc(field);
}else{
queryWrapper.orderByDesc(field);
}
}
Page page2 =service.getBaseMapper().selectPage(page1, queryWrapper);
map.put("code",0);
map.put("msg","");
map.put("count",page2.getTotal());
map.put("data",page2.getRecords());
return map;
}
field即为前台传的排序字段,order即为排序方式
后台sql:
执行效果: