目前我使用这个代码刷新网格:jqGrid的自动刷新亚格问题
setInterval(function(){ jQuery("#grid").trigger("reloadGrid"); },10000);
它运作良好。但我需要扩展子网格的解决方案。当网格刷新扩大的子网格正在关闭。
有什么办法刷新网格而不关闭展开的子网格?
目前我使用这个代码刷新网格:jqGrid的自动刷新亚格问题
setInterval(function(){ jQuery("#grid").trigger("reloadGrid"); },10000);
它运作良好。但我需要扩展子网格的解决方案。当网格刷新扩大的子网格正在关闭。
有什么办法刷新网格而不关闭展开的子网格?
看起来像their demo page正在将TR类从sgcollapsed改为sgexpanded。我认为你可以保留一系列在刷新之前打开的TR并在之后重新打开它们。
我对jqGrid知之甚少,但我想我会发布这个,因为它似乎指向你从聊天的正确方向。
这是一个古老的问题,但我挣扎着同样的事情,所以我想我会分享我所做的。 Eonasdan的答案是正确的。在我的情况下,我将代码添加到subGridRowExpanded和subGridRowCollapsed事件中以存储已扩展的行的行ID(我只允许一次扩展一行,但也可以使用集合)。然后,我将代码添加到表的loadComplete事件中,以重新打开回发后折叠的行。这部分是显而易见的,但这里是两个kickers: 1.重新展开子网格不会导致其数据由于某种原因而被保留。所以我不得不回到服务器来获取它。我通过重新提交子网格行(它的网格ID为下划线和rowid)做到了这一点。 2.出于某种原因,您必须使用计时器并延迟一段时间后展开子网格(即使1ms似乎也能正常工作)。这就像你不能在loadComplete事件本身中展开网格一样,但是如果你等待打勾,那么它就可以正常工作。
所以这样的:
var expandSubGrid = function(){
$('#grid').jqGrid('expandSubGridRow', expandedRowID);
$('#grid_' + expandedRowID).trigger('reloadGrid');
};
//the loadComplete event handler which was wired up when I created the grid
var grid_loadComplete = function() {
//expand the subgrid
window.setTimeout(expandSubGrid, 1);
};