jquery easyui dataGrid动态改变排序字段名,排序列名不一致

阅读更多

 

如果属性名是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; i0){
		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; i0){
		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; i0){//
		return sb.substring(0, sb.length()-1);
	} else {
		return sb.toString();
	}
}

 

参考:

jquery easyui dataGrid动态改变排序字段名

http://blog.csdn.net/lht0211/article/details/45395637

你可能感兴趣的:(easyui,dataGrid,排序,列名,不一致)