【问题标题】:Synchronous Calls with jqGrid?与 jqGrid 同步调用?
【发布时间】:2011-09-10 22:55:56
【问题描述】:

在 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 中的嵌套表结构上“扩展所有”是否有一种干净的方法?我意识到使所有调用同步是一个性能问题,但至少现在这可能不是问题,或者至少可能是两害相权取其轻。

【问题讨论】:

    标签: jqgrid


    【解决方案1】:

    jqGrid 代码中有很多ajax 调用。几乎每个调用都有相应的 ajax 选项,可用于覆盖任何 ajax 参数。我想ajaxSubgridOptions jqGrid 选项在表单中

    ajaxSubgridOptions: { async: false }
    

    将解决您的问题。如果没有帮助,您可以覆盖所有 ajax 调用的设置:

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

    【讨论】:

    • 太好了,现在我知道如何设置特定选项了。谢谢!对于这个特定的网格,我同意你的后一个建议只是为了成为一个包罗万象的人。在目标环境中进行的测试表明性能不是问题,并且填充表是它正在制作的唯一 AJAX 调用(至少,我正在处理的唯一......)所以它应该很好。再次感谢!
    • @David:不客气!另外看看here
    猜你喜欢
    • 1970-01-01
    • 2017-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-30
    • 2017-03-19
    • 1970-01-01
    相关资源
    最近更新 更多