0

我正在使用免费的 jqGrid 4.8.0。

我注意到searchGrid(所谓的“高级搜索”)在我关闭它后不再保存过滤条件。

我在 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);
        }
    });
}

谢谢,

塔尔。

4

1 回答 1

0

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

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

于 2015-03-24T15:27:48.583 回答