【发布时间】: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