我正在尝试实现autorefresh网格,并在用户编辑/添加/搜索时停止,因此我在ondblClickRow事件中使用clearInterval(因为我使用内联编辑)。
所以,我的问题是何时何地重启de autoreload。我尝试在loadComplete事件,这似乎是beter的地方,但每次loadComplete触发setInterval()到reloadGrid,它“倍增”reloadGrid调用! 换句话说,第一次(8秒后)重新加载确定。第二次调用2次重载。第三次调用4次重载。第四次调用8次重载,依此类推......这意味着每次都有很多ajax请求!
什么是不正确的?我将不胜感激,谢谢!
这是我的代码:
var mySeconds = 10 * 1000; //seconds *1000
var myTimer;
function autoReloadGrid($grid) {
$grid.trigger("reloadGrid", [{current:true}]);
};
var $myGrid = $("#myGrid");
$myGrid.jqGrid({
//grid options here...
ondblClickRow: function(rowId) {
clearInterval(myTimer);
//editRow here...
},
loadComplete: function() {
console.log('myTimer = ' + myTimer);
myTimer = setInterval( function() { autoReloadGrid($myGrid) }, mySeconds);
}
})
注意:我使用console.log测试myTimer值,每次触发时都会显示不同的ID。
答案 0 :(得分:0)
代码中的主要问题如下:您可以创建执行autoReloadGrid
的多个计时器。您只能在ondblClickRow
内取消最后创建的计时器。
了解loadComplete
可以多次执行非常重要:在分页,排序等方面。因此,我建议您在clearInterval
之前加入setInterval
来电。