Синхронные звонки с jqGrid? - PullRequest
1 голос
/ 08 июня 2011

В jQuery есть возможность установить синхронность вызовов AJAX:

async: false

Есть ли способ сделать это в плагине jqGrid?

Если сделать шаг назад,Реальная проблема, которую я пытаюсь решить (и, возможно, есть гораздо лучший способ сделать это), состоит в том, чтобы добавить кнопку «Развернуть все» над 3-уровневой структурой вложенной сетки.Мой первоначальный подход заключается в следующем:

$('#buttonExpandAll').click(function() {
  // Get all the rows in the top grid
  var rows = $('#mainGrid').getRowData();

  for (var i = 0; i < rows.length; i++) {

    // Expand the sub-grid for this row
    $('#mainGrid').expandSubGridRow(rows[i].Id);

    // Get all the rows for the sub-grid
    //  NOTE: This isn't working because it the data hasn't asynchronously loaded yet
    var subrows = $('#mainGrid_' + rows[i].Id + '_t').getRowData();

    for (var j = 0; j < subrows.length; j++) {

      // Expand the sub-sub-grid for this sub-row
      $('#mainGrid_' + rows[i].Id + '_t').expandSubGridRow(subrows[j].Id);
    }
  }
});

Как вы можете себе представить, он прекрасно расширяет первый уровень вложенных таблиц.Однако цикл уже завершился до того, как эти вложенные таблицы получили свои данные из соответствующих вызовов AJAX.Таким образом, внутренний цикл не имеет записей во время его вызова.

Есть ли чистый способ "развернуть все" в структуре вложенных таблиц в jqGrid?Я понимаю, что синхронизация всех вызовов - это проблема производительности, но, по крайней мере, сейчас это, вероятно, не проблема, или, по крайней мере, может быть меньшее из двух зол.

1 Ответ

5 голосов
/ 08 июня 2011

В коде jqGrid много вызовов ajax.Почти каждый вызов имеет соответствующую опцию ajax, которую можно использовать для перезаписи любого параметра ajax.Я полагаю, что опция ajaxSubgridOptions jqGrid в форме

ajaxSubgridOptions: { async: false }

решит вашу проблему.Если это не поможет, вы можете переписать настройку для всех вызовов ajax:

$.extend($.jgrid.ajaxOptions, { async: false });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...