我有一个jqGrid的,我已启用了本地过滤器/排序功能。 我重装了网格(从服务器)时点击自定义刷新按钮,它调用.trigger(“reloadGrid”)后,我设置的数据类型为JSON。 重载是成功的,然而,当有在它正在失去价值柱顶部的过滤器字段的值。
我试图将该值设置为JSON之前保存postData.filters,然后重装后,我想新的过滤器设置为保存的值,数据设置为本地,然后重新并网发电。
这是我到目前为止有:
var previouslySavedFilter;
var p;
$.subscribe('loadComplete', function(event, data) {
//Set Grid Attributes
$("#gridtable").jqGrid('setGridParam', {
ignoreCase : true
});
//Bind events to refresh grid
$("#gridtable").bind("jqGridAddEditAfterSubmit", function () {
$(this).jqGrid("setGridParam", {datatype: 'json'});
return [true];
});
$("#refresh_gridtable").bind("click", function(){
$("#gridtable").jqGrid("setGridParam", {datatype: 'json'});
return [true];
});
//Set Up to Apply Local Filters
var p = $('#gridtable').jqGrid("getGridParam", "postData");
var dtype = $('#gridtable').jqGrid("getGridParam", "datatype");
if (dtype === "json") {
setTimeout(function () {
console.log("Value of p on loadComplete: " + JSON.stringify(p.filters));
console.log("Value of previouslySavedData on loadComplete: " + JSON.stringify(previouslySavedFilter));
p.filters = previouslySavedFilter;
p.search = true;
$("gridtable").trigger("reloadGrid");
alert("Hey");
},
50);
};
}
function refreshGrid(){
var p = $('#gridtable').jqGrid("getGridParam", "postData");
console.log("Value of P in reFreshGrid: " + JSON.stringify(p));
previouslySavedFilter = p.postData.filters;
$("#gridtable").jqGrid("setGridParam", {datatype: 'json'});
$("#gridtable").trigger("reloadGrid");
}
<sjg:grid
id="gridtable"
navigatorExtraButtons="{
refresh:{
title:'Refresh',
icon:'ui-icon-refresh',
onclick:refreshGrid
}
...
>
我不知道如何保存过滤器之前我设定的数据类型为JSON并重新加载网格。 上面的代码显示“p是未定义”在控制台中。 如果我打印POSTDATA重载(在loadComplete)AFTER然后我可以查看滤波器数据。