我有一个网格,我正在检索整个数据集,然后希望用户能够对结果数据进行排序。我使用以下属性,但网格不排序。在用户点击一个按钮之后也值得一提,我将进行AJAX调用然后我需要从源代码刷新,但由于我每次都将所有数据都提取到客户端,所以我不需要去回到服务器只是为了排序。
loadonce: true, // to enable sorting on client side
sortable: true //to enable sorting
非常感谢任何建议!
答案 0 :(得分:3)
我刚注意到了一些事情。 您可以在定义网格时使用loadComplete参数。
loadComplete: function() {
// add a function here that waits for a short amount of time, like 100msecs
jQuery("#list1").jqGrid('setGridParam', {
datatype:'local',
sortname:'name',
sortorder:'asc',
page:1
}).trigger("reloadGrid");
}
请注意,我在本地使用我的数据,当我需要刷新时,将数据类型放回xml。
重要提示:这本身不起作用:在触发reloadGrid(执行行)之前,需要等待一小段时间。 否则你不会看到输出的差异。
答案 1 :(得分:2)
我不确定,但在我看来,您希望在本地实现排序,而远程搜索。我有同样的要求,我这样做:Make 'Search' remote and everything else (sorting, pagination, etc) local in jqGrid
答案 2 :(得分:2)
您可能会看到的问题并不是很清楚,但是当使用远程数据源进行本地排序和过滤时,您需要注意以下几点:
加载网格后无法更改loadonce
值,但您可以更改datatype
值并强制从服务器重新加载。网格仍然具有您为网格设置的初始url
,因此您需要运行的是:
$(this).jqGrid('setGridParam', {datatype:'json'}).trigger('reloadGrid');
您可以在此处找到有关如何执行所有操作的详细信息:http://articles.firstclown.us/post/jqgrid-configuration-for-remote-data-loading-with-local-sorting-and-filtering
答案 3 :(得分:1)
我需要刷新/加载远程数据,而所有其他操作都在本地完成。那么这就是我如何实现我的需要。
使用数据类型local
准备jqGrid$("#jqGridView").jqGrid({
//url: originalUrl,// Original line
//datatype: "json",// Original line
datatype: "local", // For local sorting
sortable: true, // I want local sorting for all columns
colNames: [...],
colModel: [...],
//...
});
然后在(重新)加载/搜索时调用此函数:
function reloadJqGrid() {
var urlForSearch = "xxx"; // modify your search URL (if required)
$.get(urlForSearch, function (data) {
$("#jqGridView").jqGrid('setGridParam',
{
datatype: 'local',
data: data.Payload //My URL response json is in JSend format, thus storing the array in "data.Payload". You may simply use "data"
})
.trigger("reloadGrid");
});
}
希望这有帮助!