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;
для вашего кода.