У меня есть jqGrid, для которого я вызываю filterToolbar и устанавливаю loadonce=true. Когда запускаю поиск поиск не работает с первого раза. Второй раз поиск работает отлично. Любая идея? jqGrid('filterToolbar', {stringResult: false, searchOnEnter: false, enableClear: false, beforeSearch: function () { Presenter.grid.setGridParam ({loadonce: "true"}); }, afterSearch: function () { }} );
Поиск на стороне клиента с filterToolbar не работает с первого раза
Ответы:
Прежде всего, значение loadonce
должно быть логическим, а не строковым: (loadonce: true
вместо loadonce: "true"
).
Секунды, loadonce
будут использоваться только при обработке данных, загруженных с сервера. Если loadonce: true
не задано, то таблица HTML будет заполнена данными, но сервер ответит, и данные, возвращенные с сервера, не будут сохранены локально. С другой стороны, если loadonce: true
, то jqGrid сохраняет данные, возвращенные с сервера, в локальной опции jqGrid data
. Но я должен повторить, что jqGrid заполняет data
только во время обработки ответа сервера. Кроме того, jqGrid меняет параметр datatype
на "local"
в конце обработки данных, если loadonce
равен true
. Таким образом, позже все будет выглядеть как локальная заполненная сетка: datatype
это "local"
, а опция data
заполняется данными (все страницы данных).
Ваш текущий код просто установил для параметра loadonce
значение true
. Он не заполняет параметр data
и не изменяет datatype
на "local"
. Вместо этого jqGrid продолжит обработку текущего запроса на фильтрацию и отправит запрос на сервер. Только после обработки ответа сервера (запрос на возврат отфильтрованных данных) jqGrid примет во внимание вариант loadonce: true
, заполнит data
и изменит datatype
на "local"
.