使用jqGrid进行同步调用?

Dav*_*vid 1 jqgrid

在jQuery中,有一个选项可以将AJAX调用设置为同步:

async: false
Run Code Online (Sandbox Code Playgroud)

有没有办法在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);
    }
  }
});
Run Code Online (Sandbox Code Playgroud)

可以想象,它扩展了第一级嵌套表就好了.但是,在这些嵌套表从各自的AJAX调用中获取数据之前,循环已经终止.因此内部循环在调用时没有记录.

是否有一种干净的方法来在jqGrid中的嵌套表结构上"展开全部"?我意识到让所有调用同步是一个性能问题,但至少现在这可能不是问题,或者至少可能是两个邪恶中的较小者.

Ole*_*leg 5

jqGrid代码中有许多ajax调用.几乎每个调用都有相应的ajax操作,可以用来覆盖任何ajax参数.我想在表单中有ajaxSubgridOptions jqGrid选项

ajaxSubgridOptions: { async: false }
Run Code Online (Sandbox Code Playgroud)

会解决你的问题.如果它没有用,你可以覆盖所有ajax调用的设置:

$.extend($.jgrid.ajaxOptions, { async: false });
Run Code Online (Sandbox Code Playgroud)