这是我的代码。当我点击 asc 或 desc 时,它总是只按升序对数据进行排序。你可以告诉我,我需要添加任何东西吗?
if (typeof jQuery("#plist")[0] != UNDEF && jQuery("#plist")[0].grid) {
jQuery("#plist").GridUnload();
}
jQuery("#plist").jqGrid({
url: URL,
datatype: 'json',
mtype: 'POST',
colModel: colModelData,
pager: '#pagerTrade',
rowNum: 80,
gridview: true,
rowList: [80, 160, 240],
viewrecords: true,
height: "550",
width: "auto",
viewsortcols: [true, 'vertical', true],
multiselect: true,
onSortCol: function(index, columnIndex, sortOrder) {
//alert("index:"+index+", columnIndex:" +columnIndex + ", sortOrder:" +sortOrder);
var colSort = {};
colSort.index = getColumnIndex("plist", columnIndex);
colSort.direction = sortOrder;
var colSortList = [ colSort ];
var pageNo = getPageNo("plist");
var rowCount = getRowCount("plist");
//Function CAll()
return 'stop';
},
gridComplete: function() {
}
});
服务器端代码:
if(!CommonUtil.isNullOrEmpty(request.getParameter("sidx"))){
sortByColumn = request.getParameter("sidx");
}
if(!CommonUtil.isNullOrEmpty(request.getParameter("sord"))){
sortByOrder = request.getParameter("sord");
}
答案 0 :(得分:0)
您使用datatype: 'json'
而不使用 loadonce: true
选项。这意味着服务器(参见url : URL
)负责数据的排序,分页和过滤/搜索。如果用户单击排序图标,则jqGrid仅使用sidx
和sord
参数向服务器发送一个请求,该参数对应于单击的列。我猜您的服务器代码忽略 sord
参数,服务器只返回按升序排序的数据页面。您需要修复服务器代码或更改代码以使用loadonce: true
选项。
答案 1 :(得分:0)
您的onSortCol事件总是停止,这会导致网格不将所需数据发送到您的服务器,并且始终不执行排序(不会执行填充)。
onSortCol: function(index, columnIndex, sortOrder) {
//alert("index:"+index+", columnIndex:" +columnIndex + ", sortOrder:" +sortOrder);
var colSort = {};
colSort.index = getColumnIndex("plist", columnIndex);
colSort.direction = sortOrder;
var colSortList = [ colSort ];
var pageNo = getPageNo("plist");
var rowCount = getRowCount("plist");
//Function CAll()
return 'stop'; <===== HERE STOP RETURNED
},
要预先删除返回停止,您将在服务器上获取参数