上次讲解了jquery bootgrid和后台的交互过程,想必大家对bootgrid都有了一定的了解。这次我们来看下它的排序功能。
前台参数
jquery bootgrid自带排序功能,例如sort[id]=desc;所以我们后台直接接收值即可。
后台接收参数
首先是dao层,得写上一个参数,然后拼接到sql上
@Override
public PageBean deviceQueryList(int pagenum,int pagesize,String sort) throws SPMException{
String sql="select * from v_m3s_device";
if(sort!=null && !sort.equals("")){
sql+=sort;
}
return queryMapResult(sql, pagenum, pagesize);
}
然后主要就是控制层了,获取到前台传过来的值,前台有几个参数,后台就接收多少参数
String sort=""; //排序
String deviceId=request.getParameter("sort[device_id]");
if(StringUtils.isNotEmptyTrim(deviceId)){
sort=" order by device_id "+deviceId;
}
String manufacturerName=request.getParameter("sort[manufacturer_name]");
if(StringUtils.isNotEmptyTrim(manufacturerName)){
sort=" order by manufacturer_name "+manufacturerName;
}
this.pageBean=this.deviceQueryService.deviceQueryList(current, rowCount,sort);
还有另一种办法接收参数,就是用数组先把这些参数统统接收过来,然后在循环遍历一下。
String sort=""; //排序
String ArraySort[]={"sort[device_id]","sort[manufacturer_name]","sort[type_name]","sort[use_date]","sort[service_date]"}; //声明并初始化,占用空间大小是5个String
for (String item : ArraySort) { //foreach遍历
String sortValue=request.getParameter(item.toString()); //toString,返回ArraySort[i]的字符串
if(StringUtils.isNotEmptyTrim(sortValue)){ //判断sortValue是否为空
//截取字符串
int intSt = item.toString().indexOf("[")+1; //indexOf,搜索从指定字符位置开始,并检查指定数量的字符位置
int intEnd = item.toString().lastIndexOf("]"); //lastIndexOf,从末位检查
String tmp = item.toString().substring(intSt,intEnd);
sort=" order by "+ tmp + " " + sortValue; //拼接sql,例如 order by device_id desc
break;
}
}
this.pageBean=this.deviceQueryService.deviceQueryList(current, rowCount,sort);
然后就会大功告成,界面如下