Бесплатная jqGrid 3.8.0 - Сброс счетчика страниц для фильтрации

У меня есть внутренние манипуляции с механизмом подкачки, поэтому я получаю смещение, используя:

xhr.getResponseHeader("X-list-paging-offset")

И общее использование:

xhr.getResponseHeader("X-list-size");

Во время обратного вызова «beforeProcessing».

Все идет нормально. У меня проблема с фильтрацией. Когда я фильтрую результаты, находясь на 3-й странице (пример), предположим, что фильтр заканчивается только одной страницей результатов, я остаюсь на 3-й странице, которая пуста....

Мой вопрос: как мне узнать, что нужно «сбросить» счетчик страниц, когда я выполняю фильтрацию? чтобы пейджер всегда сбрасывался на 1 при запуске фильтра?

Спасибо,

Тал.


person Tal    schedule 29.03.2015    source источник


Ответы (1)


Странно, потому что при фильтрации параметр page будет явно установлен в 1. Я полагаю, что вам следует искать источник проблемы в коде beforeProcessing, который вы здесь не разместили. Кстати, вы можете использовать var p = $(this).jqGrid("getGridParam"); или var p = this.p;, чтобы получить опцию jqGrid внутри beforeProcessing . Вы можете протестировать p.search или p.postData, чтобы использовать jqGrid в запросе к серверу. Вы можете использовать это значение в своей логике обратного вызова beforeProcessing. Я рекомендую вам использовать Fiddler или инструменты разработчика IE/Chrome/Firefox, чтобы проверить этот page номер, который будет установлен на сервер 1 во время поиска или сброса поиска.

Только если вы обнаружите, что причина проблемы в неправильных настройках reloadGrid, тогда я могу предложить вам альтернативу. Текущая версия бесплатного jqGrid с GitHub (функция включена после публикации версии 4.8) содержит параметры reloadGridSearchOptions, reloadGridResetOptions и reloadGridOptions. Возможно, этот вариант поможет вам. Опции reloadGridSearchOptions, reloadGridResetOptions поддерживаются внутри searchGrid и triggerToolbar/clearToolbar из filterToolbar. Можно использовать параметр сетки searching или $.jgrid.search, чтобы указать его.

Методы editGridRow, delGridRow и navGrid поддерживают reloadGridOptions параметров. Можно использовать опции jqGrid formEditing, formDeleting и navOptions для указания опции reloadGridOptions или $.jgrid.edit, $.jgrid.del, $.jgrid.nav.

Более того, jqGrid теперь поддерживает опцию reloadGridOptions, а значит, и опцию $.jgrid.defaults.reloadGridOptions.

Все вышеперечисленные опции позволяют указать любые reloadGrid опции, используемые во время перезагрузки.

person Oleg    schedule 29.03.2015
comment
Спасибо, я действительно выяснил, что основная причина заключалась в том, что он не поместил его в файл beforeRequest. beforeProcessing происходит после того, как запрос был отправлен на сервер. - person Tal; 29.03.2015
comment
@Tal: Кстати, начиная с 15 очков репутации, вы имеете право голосовать за ответы и вопросы, нажимая на стрелку вверх в левой части. Вы можете голосовать не более чем за 30 вопросов и ответов в день (см. здесь). Вы должны понимать, что цель голосования: пользователь определил, какая информация более полезна, а какая нет. Поисковая система использует голосование в качестве основного критерия. Таким образом, голосуя, вы помогаете другим пользователям найти информацию о stackoverflow. Вам просто не нужно вовремя голосовать за несколько ответов за короткое время, такое голосование будет удалено. - person Oleg; 29.03.2015