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