使用jqGrid进行同步调用?

使用jqGrid进行同步调用?,jqgrid,Jqgrid,在jQuery中,有一个将AJAX调用设置为同步的选项: async: false 在jqGrid插件中有没有实现这一点的方法 退一步说,我试图解决的实际问题(可能还有更好的方法)是在三层嵌套网格结构上方添加一个“全部展开”按钮。我最初的做法很简单: $('#buttonExpandAll').click(function() { // Get all the rows in the top grid var rows = $('#mainGrid').getRowData();

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

async: false
在jqGrid插件中有没有实现这一点的方法

退一步说,我试图解决的实际问题(可能还有更好的方法)是在三层嵌套网格结构上方添加一个“全部展开”按钮。我最初的做法很简单:

$('#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);
    }
  }
});
$(“#按钮展开”)。单击(函数(){
//获取顶部网格中的所有行
变量行=$(“#主网格”).getRowData();
对于(变量i=0;i
可以想象,它可以很好地扩展嵌套表的第一级。但是,在这些嵌套表从各自的AJAX调用中获取数据之前,循环已经终止。因此,内部循环在调用时没有记录


在jqGrid中,有没有一种干净的方法可以“全部展开”嵌套表结构?我意识到使所有调用同步是一个性能问题,但至少目前这可能不是一个问题,或者至少可能是两个弊病中较小的一个。

jqGrid代码中有许多ajax调用。几乎每个调用都有相应的ajax操作,可用于覆盖任何ajax参数。我想jqGrid选项的形式是

ajaxSubgridOptions: { async: false }
这会解决你的问题。如果没有帮助,您可以覆盖所有ajax调用的设置:

$.extend($.jgrid.ajaxOptions, { async: false });

jqGrid代码中有许多ajax调用。几乎每个调用都有相应的ajax操作,可用于覆盖任何ajax参数。我想jqGrid选项的形式是

ajaxSubgridOptions: { async: false }
这会解决你的问题。如果没有帮助,您可以覆盖所有ajax调用的设置:

$.extend($.jgrid.ajaxOptions, { async: false });

很好,现在我知道如何设置特定选项了。谢谢对于这个特殊的网格,我同意你的后一个建议,只是为了一概而论。在目标环境中进行的测试表明性能不是问题,填充表是它进行的唯一AJAX调用(至少是我处理的唯一AJAX调用…),所以应该是好的。再次感谢@大卫:不客气!另外看看。太好了,现在我知道如何设置特定选项了。谢谢对于这个特殊的网格,我同意你的后一个建议,只是为了一概而论。在目标环境中进行的测试表明性能不是问题,填充表是它进行的唯一AJAX调用(至少是我处理的唯一AJAX调用…),所以应该是好的。再次感谢@大卫:不客气!另外看看。