如果属性名是propertyName,而列名是property_name,那么排序会报错,
jquery jqGrid是能指定排序列名的,而easyui的dataGrid没有,
需要做列名转换,
一、前台通过js转换
优点:高效,好编辑,省服务器资源。
缺点:暴露列名,(不过一般内网系统,这个可接受)
加载前做排序转换
dataGrid指定
sortName:'propertyName',
sortOrder:'asc',
multiSort:true,
onBeforeLoad:dgOnBeforeLoad
//排序转换map var sortMap = {}; sortMap['propertyName']='property_name'; //排序转换 //dataGrig的onBeforeLoad事件引用 function dgOnBeforeLoad(param){ if(param.sort){ //另一个参数:param.order var sortResult = ""; var sorts = param.sort.split(","); var sort; for(var i=0; i<sorts.length; i++){ sort = sorts[i].trim(); if(sortMap && sortMap[sort]){ sortResult += sortMap[sort]; } else { sortResult += sort; } sortResult += ","; } } if(sortResult.length>0){ sortResult = sortResult.substring(0,sortResult.length-1); } param.sort = sortResult; }
sortName写属性名,而不是列名,这样就不会出现,在dataGrid中看不出按哪列排序的问题
复杂的方法,一般不用配置sortMap
//排序转换 function dgOnBeforeLoad(param){ if(param.sort){ param.sort=sortConvert(param.sort,null,null,true); } } /** * 排序转换,驼峰命名方法大写字母前加下划线(大写字母转成小写) * @param paramSort 排序字符串,如:addTime,modifyTime,id * @param sortMap 指定排序Map,没有,可以传null * var sortMap = {}; * sortMap['propertyName']='property_name'; * @param ignoreConvert 忽略转换的列表,以逗号分隔,如:propertyName1,propertyName2,可以传null * @param otherConvert 其他的,是否转换 * @returns {String} //add_time,modify_time,id */ function sortConvert(paramSort, sortMap, ignoreConvert, otherConvert){ var ignoreMap = {}; if(ignoreConvert && ignoreConvert.length>0){ var ignoreConverts = ignoreConvert.split(","); for(var i=0; i<ignoreConverts.length; i++){ ignoreMap[ignoreConverts[i].trim()] = true; } } var sortResult = ""; var sorts = paramSort.split(","); var sort; var ch; for(var i=0; i<sorts.length; i++){ sort = sorts[i].trim(); if(sortMap && sortMap[sort]){ //先转换指定的转换 sortResult += sortMap[sort]; } else if(ignoreMap[sort]){ //忽略的,不转换 sortResult += sort; } else if(otherConvert) { //默认转换方式 for(var j=0; j<sort.length; j++){ ch = sort.charAt(j); if(isUpperCase(ch)){ sortResult += "_"+ch.toLowerCase(); } else { sortResult += ch; } } } else { sortResult += sort; } sortResult += ","; } if(sortResult.length>0){ sortResult = sortResult.substring(0,sortResult.length-1); } //alert(sortResult); return sortResult; }
二、后台通过java转换
优点:不暴露列名
缺点:用服务器资源,修改不方便
服务器端,写了个,不打算用,供参考
/** * 排序转换,驼峰命名方法加下划线 * addTime desc, modifyTime desc,id asc * add_time desc,modify_time desc,id asc * @param orderByStr * @return */ public String orderByConvert(String orderByStr){ String[] orderBys = orderByStr.split(","); String sort; String order; char ch; StringBuffer sb = new StringBuffer(); for(String orderBy : orderBys){ orderBy = orderBy.trim(); String[] sortOrders = orderBy.split(" "); sort = sortOrders[0]; order = sortOrders[1]; for(int i=0; i<sort.length(); i++){ ch = sort.charAt(i); if(Character.isUpperCase(ch)){ sb.append('_'); sb.append(Character.toLowerCase(ch)); } else { sb.append(ch); } } sb.append(' '); sb.append(order); sb.append(','); } //log.info("---orderByStr:"+orderByStr); //log.info("---orderByStr:"+sb.toString()); if(sb.length()>0){// return sb.substring(0, sb.length()-1); } else { return sb.toString(); } }
参考:
jquery easyui dataGrid动态改变排序字段名
http://blog.csdn.net/lht0211/article/details/45395637
相关推荐
jQuery easyui dataGrid 动态改变排序字段名,一般情况下,在使用的时候,我们会点击相应字段进行排序,这里以JAVA为例,后端的实体类字段有可能和数据库的字段不一致; 如:实体类中的属性为userName,前台filed=...
jquery easyui demo 网页下载下来打包了,还有datagrid简要说明
jQuery EasyUI Datagrid 用户列表鼠标悬停/离开数据行时显示人员头像(onMouseOver/onMouseOut) Demo 扩展 jQuery EasyUI Datagrid 数据行鼠标悬停离开事件,源码奉献!!!
jquery easyui 扩展 datagrid 自定义动态隐藏显示列
JS EasyUI DataGrid动态加载数据
本文给大家分享jQuery EasyUI编辑DataGrid用combobox实现多级联动效果的实例代码,代码简单易懂,非常不错,具有参考借鉴价值,感兴趣的朋友一起看看吧
easyUI页面datagrid动态列和form字段动态添加;项目开发时用到的,废了不少事,大概总了一下,现在发出来共享给想我一样的要用到的菜鸟们,谢谢
jquery easyui datagrid 性能优化,优化后可快速提升查询性能。唯一的缺陷就是不支持可编辑grid了。只需要在引入easyui.js后面引入此js即可。
EasyUI Datagrid 中文排序的问题 解决了WEB端和后台(Oracle、MySQL)中文排序问题
jquery easyui datagrid demo 详解 增删改查
jqueryEasyUI中的dataGrid实现的表格的增删改查,后台使用servlet,有数据库源码
jquery easyui datagrid 教程的部分应用。
两种方法将easyui datagrid 中的数据导出到Excel中,均以验证可以正常使用
JQuery EasyUI DataGrid服务端分页加载数据后,DataGrid行号不能延续,总是重新由1开始。因为服务端分页取回的是单页数据,通过LoadData方法加载数据后,pageNumber属性被初始化为1,因此行号总是重新由1开始。现在...
EasyUI DataGrid过滤用法实例
easyui datagrid排序图标 默认情况是没有图标的,无法区分哪些列可以排序
NULL 博文链接:https://wusuobuai.iteye.com/blog/1860496
解决EasyUIdataGrid列比较多,无数据,列展现不全
easyui datagrid中实现上下左右、回车切换单元格easyui datagrid中实现上下左右、回车切换单元格easyui datagrid中实现上下左右、回车切换单元格