[英]jqGrid Reload Filter Values After .trigger(“reloadGrid”)
我有一個jqGrid,其中啟用了本地過濾器/排序功能。 單擊自定義刷新按鈕(將數據類型設置為JSON之后,調用.trigger(“ reloadGrid”))時,我正在從服務器重新加載網格。 重新加載成功,但是,在列頂部的過濾器字段之一中有一個值時,它將丟失該值。
我試圖在將值設置為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 is undefined”。 如果在重裝后(在loadComplete中)打印出postData,則可以查看過濾器數據。
下面的代碼將使用排序/過濾器信息強制網格重新加載。 此代碼位於loadComplete()的末尾。 將數據類型設置為本地然后觸發重新加載是使網格將排序/過濾器應用於網格的關鍵(當數據設置為“ json”時重新加載,這將從服務器重新加載網格。)
var dtype = $('#gridtable').jqGrid("getGridParam", "datatype");
if (dtype == 'json'){
$("#gridtable").jqGrid("setGridParam", {datatype: 'local'});
setTimeout(function () {
p.search = true;
$("#gridtable").trigger("reloadGrid");
},0
);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.