Установка colqame и colModel JqGrid из данных JSON - PullRequest
2 голосов
/ 22 июля 2010

Я пытаюсь сгенерировать список имен столбцов и модель столбца на сервере и передать его в JqGrid.Я успешно сгенерировал JSON и передал его клиенту через XHR, нареканий нет.Но сама сетка не отображается.Я вижу один столбец сетки с кнопкой «Свернуть / развернуть» сетки вверху.

Вот вызов javascript:

var col_names = [];
var col_model = [];
...
...

jQuery(document).ready(function() {
  //XHR to get col_names and col_model
  $.ajax({url: 'http://localhost:8080/metadata',
          success: function(data) {
            col_names = data.names;
            col_model = data.model;
          }
  });
jQuery("#list").jqGrid({
    url:'http://localhost:8080:/data?level=0',
    datatype: 'json',
    mtype: 'GET',
    colNames: col_names,
    colModel: col_model,
    ...
    ...

Вот JSON:

{
    "model": [{"index": "pid", "name": "pid"},
              {"index": "p1", "name": "p1"},
              {"index": "p2", "name": "p2"}],
    "names": ["PID", "P1", "P2"]
}

Сетка будет отображаться, если я жестко закодирую colModel.Кстати, в заголовках ответа тип контента установлен на «application / json».

TIA

1 Ответ

3 голосов
/ 22 июля 2010

В своем опубликованном коде вы инициализируете jqGrid до завершения вызова AJAX:

jQuery(document).ready(function() {
  //XHR to get col_names and col_model
  $.ajax({url: 'http://localhost:8080/metadata',
          success: function(data) {
            col_names = data.names;
            col_model = data.model;
         }
 });
jQuery("#list").jqGrid({
...

Вам необходимо либо переместить код jqGrid в функцию success, либо установить для параметра async значение false в вашем вызове на $.ajax.

Во время ожидания вызова AJAX вы можете отобразить спиннер или что-то подобное на странице, чтобы удерживать пользователя занятым.

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