jqGrid 4.8.0 - функция searchGrid не сохраняет ваш фильтр

Я использую бесплатную jqGrid 4.8.0.

Я заметил, что searchGrid (что называется "Расширенный поиск") больше не сохраняет критерии фильтра после его закрытия.

Я сравнил тот же самый точный код на 4.7.1, и на 4.7.1 он сохранил фильтр.

Это заставило меня подумать, может быть, каким-то образом опция по умолчанию для 'refreshateFilter' была установлена ​​в 'true' в 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 ответ

Решение

Прежде всего, проблема не может быть воспроизведена при стандартном использовании (см. Демонстрацию).

Я не могу проследить за всеми частями фрагмента кода, который вы разместили, но причина описанной проблемы выглядит следующим образом: вы используете опцию sFilter: "afilters" это означает, что вы хотите переименовать по умолчанию filters свойство, используемое jqGrid в postData для сохранения фильтра в afilters, ХОРОШО. Тогда вы включили строку delete postData.afilters; Внутри onSearch, Уничтожает фильтр. Так что больше нет информации о предыдущем фильтре. Из-за этого jqGrid не сможет отобразить предыдущий фильтр при следующем открытии диалогового окна поиска. Чтобы решить проблему, вы должны удалить строкуdelete postData.afilters; для вашего кода.

Другие вопросы по тегам