【问题标题】:Autoreload jqgrid and stop when editing自动重新加载 jqgrid 并在编辑时停止
【发布时间】:2014-05-01 18:01:43
【问题描述】:

我正在尝试实现自动刷新网格,并在用户编辑/添加/搜索时停止,所以我在 ondblClickRow 事件中使用 clearInterval(因为我使用内联编辑)。

所以,我的问题是何时何地重新启动 de autoreload。我尝试在 loadComplete 事件中,这似乎是更好的地方,但每次 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。

【问题讨论】:

    标签: jquery jqgrid


    【解决方案1】:

    您的代码中的主要问题如下:您可以创建执行autoReloadGrid多个 计时器。您只取消了在ondblClickRow最后创建的计时器。

    了解loadComplete 可以多次执行很重要:分页、排序等。所以我建议你在setInterval之前包括clearInterval的调用。

    【讨论】:

    • 谢谢!所以正如你所说,这是正确的吗? loadComplete: function() { clearInterval(myTimer); myTimer = setInterval( function() { autoReloadGrid($myGrid) }, mySeconds); }
    • @Aberel:是的,它应该可以工作。您可以将clearInterval(myTimer); 替换为if (myTimer !== undefined) { clearInterval(myTimer); },但这并不是必须的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-08
    • 2011-10-20
    相关资源
    最近更新 更多