【问题标题】:jqGrid 4.8.0 - the 'searchGrid' function is not saving your filterjqGrid 4.8.0 - 'searchGrid' 功能没有保存你的过滤器
【发布时间】:2015-03-24 15:01:37
【问题描述】:

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

谢谢,

塔尔。

【问题讨论】:

  • 您的意思是 Guriddo jqGrid JavaScript 4.8/4.8.1/4.8.2 还是 Free jqGrid 4.8?你能描述一下你如何使用searchGrid吗? (例如使用navGrid)。如何重现问题?
  • 我添加了代码。我没有在 navGrid 中使用它。
  • 试试the demo。我无法重现所描述的问题。我现在看到你的代码我会分析它...
  • 是的,从 navGrid 可以正常工作。我也从 navGrid 尝试过,它在 navGrid 中运行正常。感谢您调查它。它会帮助我很多知道如何调整它,所以它也可以在 searchGrid 中工作。

标签: jquery jqgrid free-jqgrid


【解决方案1】:

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

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

【讨论】:

  • 你是对的。我需要删除 aFilter 因为我的服务器除了这么多过滤器之外没有,我正在内部构建一个工具栏过滤器、高级和帖子分组过滤器。我忘记做的是在 gridComplete 回调中返回它。
猜你喜欢
  • 2012-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-05
  • 1970-01-01
  • 2013-05-21
  • 1970-01-01
  • 2016-08-27
相关资源
最近更新 更多