jqGrid - как установить сетку, чтобы НЕ загружать какие-либо данные изначально? - PullRequest
19 голосов
/ 14 октября 2010

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

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

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

Есть идеи?

Ответы [ 3 ]

31 голосов
/ 14 октября 2010

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

$("#list").jqGrid('setGridParam',{datatype:'json'}).trigger('reloadGrid');
21 голосов
/ 14 декабря 2011

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

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

loadBeforeSend: function (xhr, settings) {
  this.p.loadBeforeSend = null; //remove event handler
  return false; // dont send load data request
}
0 голосов
/ 12 января 2016

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...