jqGrid 4.8.0 - 'searchGrid'函数没有保存你的过滤器

时间:2015-03-24 15:01:37

标签: jquery jqgrid free-jqgrid

我使用免费的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);
        }
    });
}

谢谢,

塔尔。

1 个答案:

答案 0 :(得分:0)

首先,问题不能在标准用法上再现(见the demo)。

我无法跟踪您发布的代码片段的所有部分,但所描述问题的原因如下所示:您使用选项sFilter: "afilters",这意味着您要重命名默认{{ 1}} jqGrid在filters中用于将过滤器保存到postData的属性。好。然后,您在afilters内加入了delete postData.afilters;行。 它会破坏过滤器。因此没有关于以前过滤器的更多信息。因为jqGrid将无法在下一次打开搜索对话框时显示前一个过滤器。 要解决此问题,您应该删除代码的行onSearch