2011-09-06 70 views
0

目前我使用这个代码刷新网格:jqGrid的自动刷新亚格问题

setInterval(function(){ jQuery("#grid").trigger("reloadGrid"); },10000); 

它运作良好。但我需要扩展子网格的解决方案。当网格刷新扩大的子网格正在关闭。

有什么办法刷新网格而不关闭展开的子网格?

回答

0

看起来像their demo page正在将TR类从sgcollapsed改为sgexpanded。我认为你可以保留一系列在刷新之前打开的TR并在之后重新打开它们。

我对jqGrid知之甚少,但我想我会发布这个,因为它似乎指向你从聊天的正确方向。

1

这是一个古老的问题,但我挣扎着同样的事情,所以我想我会分享我所做的。 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); 
};