关于jqGrid数据排序的问题

零七九三 发布于 2016/02/16 17:11
阅读 6K+
收藏 0

如上图,降序的时候,jqGrid会按前台方法排序,这样显然行不通!

(实际上后台数据是以1397、1000、999这样降序的形式返回的!)

说明:通过向后端ajax获取到jsonData,然后传给jqGrid的。没有使用jqGrid自带的方法获取数据。

个人感觉是jqGrid缓存的问题,但是我设置了很多种方法还是无效!

主要代码:
if(_this.hasLoadGrid){
	$node[0].grid.beginReq();
	$node[0].grid.endReq();
	$node.jqGrid('clearGridData');
	$node.jqGrid('setGridParam', {data: dataObj});
	$node.trigger('reloadGrid');	
}else{
	$node.jqGrid({
		data:jsonData,
		datatype:"local",
		cache: false,
		loadonce: false,
		onSortCol: function (index, colindex, sortorder){
			_this.sData.sort = '{"' + index + '":"' + sortorder + '"}';
			_this.view('dataList');//这里是ajax重新加载数据表的方法
		}
	}).trigger('GridUnload');
	_this.hasLoadGrid = true;
}






加载中
0
无脑仔的小明
无脑仔的小明
那个colModel里面的json 数据 这样设置 {name:'count', width:70, sorttype:'integer',formatter:'integer'}
0
刘新全
刘新全
sortable:true,

sortname : 'score',

sortorder : "desc",

这3个都设置了吗?

还有就是你先打印出后台返回的数据,看看是不是返回的时候就没有排对。


0
零七九三
零七九三

引用来自“刘新全”的评论

sortable:true,

sortname : 'score',

sortorder : "desc",

这3个都设置了吗?

还有就是你先打印出后台返回的数据,看看是不是返回的时候就没有排对。


谢谢回答。jqGrid这三个属性缺省的情况下就是这样的吧?控制台里看到后台返回的JSON数据排序是对的。希望继续帮我解答!

0
刘新全
刘新全
那个datatype怎么是local,应该是json吧!
零七九三
零七九三
可以是local的,因为我是本地获取好了的JSON数据对象给了jqGrid
0
零七九三
零七九三

引用来自“无脑仔的小明”的评论

那个colModel里面的json 数据 这样设置 {name:'count', width:70, sorttype:'integer',formatter:'integer'}
感谢!我在colModel里加了sorttype:'integer'排序就正常啦!再次感谢!也谢谢其它朋友!
0
wanghu1983
wanghu1983
请问楼主,我的jqgrid有个列可以排序,点击此列也能把需要排序的列名和排序方式传给后台,但当我对grid执行一次reloadGrid后,再点击这个排序列,相应的两个参数sord和sidx就没有,后台无法排序,请问这种情况怎么处理?
0
零七九三
零七九三

引用来自“wanghu1983”的评论

请问楼主,我的jqgrid有个列可以排序,点击此列也能把需要排序的列名和排序方式传给后台,但当我对grid执行一次reloadGrid后,再点击这个排序列,相应的两个参数sord和sidx就没有,后台无法排序,请问这种情况怎么处理?

如果我没记错的话,在reloadGrid的时候(判断)需要: 

$node[0].grid.beginReq();
$node[0].grid.endReq();
$node.jqGrid('clearGridData');
$node.jqGrid('setGridParam', {data: jsonData});
$node.trigger('reloadGrid');

说明:$node是表格的jq节点,jsonData是后台返回的json数据
wanghu1983
wanghu1983
谢谢@零七九三 答复,我已通过jqGrid的onSortCol函数解决
返回顶部
顶部