Ответ 1
Вы должны сначала использовать datatype: 'local'
. В тот момент, когда вам нужно загрузить данные, вы должны изменить datatype
на json
или xml
:
$("#list").jqGrid('setGridParam',{datatype:'json'}).trigger('reloadGrid');
Как создать сетку, но не загружать какие-либо данные?
Если я опускаю опцию url
, тогда срабатывает обратный вызов loadError
.
В настоящее время мы устанавливаем url:NoData.json
, где NoData.json - это статический файл без каких-либо строк в нем.
Проблема заключается в обратном вызове loadComplete
, который мы хотели бы отключить, если сетка не содержит данных - кроме того, что мы не хотим отображать это сообщение при начальной загрузке. В настоящее время мы обрабатываем это следующим образом:
//jqGrid load complete handler
function loadComp(grid) {
if (grid.getGridParam("url") != "NoData.json" && grid.getGridParam("records") == 0) {
setStatus("Your search did not return any results");
}
}
Это просто кажется немного взломанным.. хотелось бы, чтобы сетка не загружала никаких данных изначально.
Любые идеи?
Вы должны сначала использовать datatype: 'local'
. В тот момент, когда вам нужно загрузить данные, вы должны изменить datatype
на json
или xml
:
$("#list").jqGrid('setGridParam',{datatype:'json'}).trigger('reloadGrid');
Я хотел создать сетку, которая не загружает данные при загрузке страницы, но загружает данные, когда пользователь нажимает на обновление или использует поиск. Мое решение немного взломанно, но очень легко и прекрасно работает.
Я использую событие callback loadBeforeSend
, чтобы остановить запрос ajax для данных при загрузке страницы. Моя функция обратного вызова удаляет себя, поэтому он будет выполнен только один раз.
loadBeforeSend: function (xhr, settings) {
this.p.loadBeforeSend = null; //remove event handler
return false; // dont send load data request
}
Не устанавливайте URL-адрес при инициализации сетки. Установите URL-адрес непосредственно перед загрузкой сетки с помощью функции setGridParam.
Это работает для меня.