jqGrid 4.8.0 - 'searchGrid' 函数没有保存你的过滤器
jqGrid 4.8.0 - the 'searchGrid' function is not saving your filter
我正在使用免费的 jqGrid 4.8.0。
我注意到 searchGrid
(所谓的 'Advanced Searching')在我关闭它后不再保存过滤条件。
我在 4.7.1 上比较了完全相同的代码,在 4.7.1 上它确实保存了过滤器。
这让我想到在 4.8.0 中 'recreateFilter' 的默认选项可能设置为 'true',所以为了安全起见,我也设置了 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);
}
});
}
谢谢,
塔尔。
首先问题无法在标准用法上重现(参见the demo)。
我无法理解您发布的代码片段的所有部分,但所描述问题的原因似乎如下:您使用了选项 sFilter: "afilters"
,这意味着您想要重命名默认值 filters
属性 jqGrid 在 postData
中使用,用于将过滤器保存到 afilters
。好的。然后你在 onSearch
中包含了 delete postData.afilters;
行。 它破坏了过滤器。 所以没有更多关于以前过滤器的信息。因为 jqGrid 将无法在搜索对话框的下一次打开时显示以前的过滤器。 要解决此问题,您应该删除代码中的 delete postData.afilters;
行。
我正在使用免费的 jqGrid 4.8.0。
我注意到 searchGrid
(所谓的 'Advanced Searching')在我关闭它后不再保存过滤条件。
我在 4.7.1 上比较了完全相同的代码,在 4.7.1 上它确实保存了过滤器。
这让我想到在 4.8.0 中 'recreateFilter' 的默认选项可能设置为 'true',所以为了安全起见,我也设置了 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);
}
});
}
谢谢,
塔尔。
首先问题无法在标准用法上重现(参见the demo)。
我无法理解您发布的代码片段的所有部分,但所描述问题的原因似乎如下:您使用了选项 sFilter: "afilters"
,这意味着您想要重命名默认值 filters
属性 jqGrid 在 postData
中使用,用于将过滤器保存到 afilters
。好的。然后你在 onSearch
中包含了 delete postData.afilters;
行。 它破坏了过滤器。 所以没有更多关于以前过滤器的信息。因为 jqGrid 将无法在搜索对话框的下一次打开时显示以前的过滤器。 要解决此问题,您应该删除代码中的 delete postData.afilters;
行。