Подтвердить что ты не робот

JqGrid - как настроить сетку, чтобы НЕ загружать какие-либо данные изначально?

Как создать сетку, но не загружать какие-либо данные?

Если я опускаю опцию 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");
    }
}

Это просто кажется немного взломанным.. хотелось бы, чтобы сетка не загружала никаких данных изначально.

Любые идеи?

4b9b3361

Ответ 1

Вы должны сначала использовать datatype: 'local'. В тот момент, когда вам нужно загрузить данные, вы должны изменить datatype на json или xml:

$("#list").jqGrid('setGridParam',{datatype:'json'}).trigger('reloadGrid');

Ответ 2

Я хотел создать сетку, которая не загружает данные при загрузке страницы, но загружает данные, когда пользователь нажимает на обновление или использует поиск. Мое решение немного взломанно, но очень легко и прекрасно работает.

Я использую событие callback loadBeforeSend, чтобы остановить запрос ajax для данных при загрузке страницы. Моя функция обратного вызова удаляет себя, поэтому он будет выполнен только один раз.

loadBeforeSend: function (xhr, settings) {
  this.p.loadBeforeSend = null; //remove event handler
  return false; // dont send load data request
}

Ответ 3

Не устанавливайте URL-адрес при инициализации сетки. Установите URL-адрес непосредственно перед загрузкой сетки с помощью функции setGridParam.

Это работает для меня.