我使用免费的jqGrid 4.8.0。
我注意到searchGrid
(所谓的'高级搜索')在关闭后不再保存过滤条件。
我在4.7.1上比较了相同的确切代码,在4.7.1上它确实保存了过滤器。
这让我想到某种方式可能是' recreateFilter'的默认选项。被设定为真实的'在4.8.0中,所以我也设置recreateFilter: false
,以确保安全。它没有任何帮助。
感谢任何解决问题的建议。
这是代码,基本上我是从网格外部调用它作为函数:
function advancedFilterConfig (nameOfGrid,gridName) {
$(nameOfGrid).jqGrid('searchGrid', {
multipleSearch:true,
showQuery: true,
multipleGroup:true,
caption: "Advanced Search",
sFilter: "afilters",
Find: "Apply",
Reset: "Reset & Close",
closeAfterReset: true,
width:'auto',
recreateForm: true,
recreateFilter: false,
errorcheck: true,
overlay:false,
onSearch: function () {
//Hide the tool bar
$("#gview_"+gridName).find('.ui-search-toolbar').hide();
var postData = $(nameOfGrid).jqGrid('getGridParam', 'postData');
var advancedFilter = jQuery.parseJSON(postData.afilters);
delete postData.afilters;
//Set the advanaced filter here.
gridsSettingObject[gridName].advancedFilter = advancedFilter;
gridsSettingObject[gridName].useAdvancedFilter = true;
changeToggleSwitch(0, '#' + gridName + '-as-on-off-div');
sessionList($(nameOfGrid),gridName);
},
onReset: function () {
delete gridsSettingObject[gridName].advancedFilter;
gridsSettingObject[gridName].useAdvancedFilter = false;
changeToggleSwitch(1, '#' + gridName + '-as-on-off-div');
//Unhide the tool bar
$("#gview_"+gridName).find('.ui-search-toolbar').show();
sessionList($(nameOfGrid),gridName);
}
});
}
谢谢,
塔尔。
答案 0 :(得分:0)
首先,问题不能在标准用法上再现(见the demo)。
我无法跟踪您发布的代码片段的所有部分,但所描述问题的原因如下所示:您使用选项sFilter: "afilters"
,这意味着您要重命名默认{{ 1}} jqGrid在filters
中用于将过滤器保存到postData
的属性。好。然后,您在afilters
内加入了delete postData.afilters;
行。 它会破坏过滤器。因此没有关于以前过滤器的更多信息。因为jqGrid将无法在下一次打开搜索对话框时显示前一个过滤器。 要解决此问题,您应该删除代码的行onSearch
。