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; 行。