У меня есть 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".