0

我正在尝试定期重新加载我的网格。我遇到了解决方案:

var grid = $("#list"),
    intervalId = setInterval(
    function() {
        grid.trigger("reloadGrid",[{current:true}]);
    },
    300000); // 300 sec === 5 min

但我不确定将这段代码放在哪里。它进去了loadComplete吗?我已经在使用

jQuery("#list").trigger("reloadGrid", [{current:true}]);

像这样

jQuery("#list").jqGrid({...

    jQuery("#list").trigger("reloadGrid", [{current:true}]);

...});

我不明白在哪里访问

intervalId

请帮忙,。谢谢

奥列格,这是我根据您的回答所尝试的:

    // above this line is the grid code including nav grid

    jQuery("#refresh_list").click(function(){
        jQuery("#list").setGridParam({datatype: 'json'});
      //  jQuery("#list").trigger("reloadGrid");
      setInterval(function() {
            $('#list').trigger("reloadGrid", [{current:true}]);
        alert("hello");}, 2000);
            });
    });   //This is the end of the document.ready function

我是否正确放置了 setinterval 函数?它应该在网格内部还是外部?它应该在 document.ready 内部还是外部? 令人惊讶的是,警报会如您所料弹出!但网格不会重新加载。我知道是因为我正在对数据库进行更改并且它们没有反映在网格中。当我单击刷新按钮时,它会按预期显示当前数据。我希望它定期重新加载并始终拥有数据库中的最新数据。

顺便说一下,这些是我正在使用的网格选项

    pager: "#pager",        //Identifying the navigation bar
  rowNum: 500,          // how many rows to display on page 1
  rowList: [500,1000, 2000, 3000,4000], //values for the dropdown which specifies how many rows to show 
  sortorder: "desc", //the order of sorting by default
  viewrecords: true, // displays total number of rows
  gridview: true,   // the full grid body will be placed on the page as one operation
  autoencode: true,
  height:400, //height of the grid
  ignoreCase:true,// case insensitive search
  multiselect:true, // checkboxes before each row
  multiboxonly: true,
  loadonce:true, //for client side sorting, searching and pagination
  caption:"This is me", // caption for the grid header

请帮忙

4

2 回答 2

1

我认为这只是一个小小的误会。如果你想每 5 分钟重新加载一次网格,你应该执行代码

grid.trigger("reloadGrid",[{current:true}]);

每 5 分钟 标准的 JavaScipt 函数setInterval有助于做到这一点。如果你执行

setInterval(function() {
    grid.trigger("reloadGrid",[{current:true}]);
}, 300000); // 300 sec === 5 min

那么回调函数grid.trigger("reloadGrid",[{current:true}]);将每 5 分钟执行一次。所以网格会像你想要的那样重新加载。

将结果保存setInterval在原始代码中的变量中

var grid = $("#list"),
    intervalId = setInterval(function() {
        grid.trigger("reloadGrid",[{current:true}]);
    }, 300000); // 300 sec === 5 min

如果您需要停止自动重新加载网格,这很有帮助。例如,如果用户开始编辑一行,您可以通过以下方式停止重新加载

clearInterval(intervalId);

在用户提交丢弃它的更改后,您可以再次执行相同的setInterval操作以开始自动重新加载。因此,intervalId仅当您要停止定期执行中使用的回调函数时才需要该变量setInterval

于 2013-07-24T17:44:47.617 回答
0

我是这样想的:

  window.setTimeout( refreshGrid, 8000);
 function refreshGrid()
 {
    jQuery("#refresh_list").click();
    window.setTimeout(refreshGrid, 8000);

  }  
于 2013-08-07T14:17:47.427 回答