【问题标题】:How to periodically reload jQGrid如何定期重新加载 jQGrid
【发布时间】:2013-07-24 15:09:47
【问题描述】:

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

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

请帮忙,。 谢谢

Oleg,这是我根据你的回答尝试过的:

    // 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

请帮忙

【问题讨论】:

    标签: javascript jqgrid reload


    【解决方案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中使用的回调函数时才需要。

    【讨论】:

    • 感谢奥列格!但我仍然没有得到想要的结果。我按照你说的放置了代码。请看编辑
    • @user2334092:我在您的代码中看到您在jQuery("#refresh_list") 内部调用setInterval。如果用户在按钮上单击一次会怎样?您应该在jQuery("#refresh_list").click 之外调用setInterval,然后每2 秒永久刷新一次,或者您必须将setInterval 返回的值保存在变量中,并通过调用clearInterval 取消先前设置的永久重新加载。
    • 谢谢。我尝试在刷新列表之外调用它,但网格仍然没有重新加载。我仍然会弹出警报。我注意到的一件奇怪的事情是,当我包含 setInterval 函数时,我的 VERTICAL SCROLLBAR 不能保持静止!我试图通过向下滚动来查看一些数据,但是一旦我向下滚动,滚动条就会立即回到顶部!我想以某种方式正在重新加载网格。这可以解释为什么滚动条一直到顶部。但数据没有更新
    • 您认为我的网格参数有问题吗?我正在使用 JSON 数据。我必须使用刷新列表,因为我想实现客户端排序、搜索和分页。这就是为什么当数据进入时我必须将其转换为本地但要查询 URL 我必须将它们转换为 JSON 以便我可以传递正确的参数。您认为这可能与重新加载有关吗?顺便说一下,刷新按钮工作得很好。
    • @user2334092:对不起,在我和家人一起飞行之前,我必须做一些事情。恐怕要到八月中旬才能到达。最美好的祝愿!
    【解决方案2】:

    我是这样想的:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-11
      • 2011-11-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多