用于刷新页面和/或 Telerik 网格的 JavaScript 代码

Posted

技术标签:

【中文标题】用于刷新页面和/或 Telerik 网格的 JavaScript 代码【英文标题】:JavaScript code to refresh page and or telerik grid 【发布时间】:2011-07-30 17:33:03 【问题描述】:

我需要某种代码,它会每 5 分钟刷新一次页面,如果不是页面,则只显示 Telerik 网格,因为这就是所有需要的。

如果可能的话,只有在页面上没有任何活动 5 分钟后才会出现其他情况,但这不是核心功能。

【问题讨论】:

如果有谁对我投了反对票,我会很好地解释原因,这样我就可以改进/纠正错误的地方。 【参考方案1】:

一种可能性是使用元刷新标签:

<meta http-equiv="refresh" content="300" />

另一种可能性是使用window.setInterval 方法定期向控制器操作发送AJAX 请求并更新DOM:

window.setInterval(function() 
    // Send an AJAX request to a controller action which will
    // return a partial with the grid and update the DOM
    $.ajax(
        url: '/grid',
        success: function(result) 
            $('#someGridContainer').html(result);
        
    );
, 300000);

要实现空闲功能,您可以使用jquery idle plugin。

【讨论】:

这只会刷新网格本身,是否可以用于 $("#cal").datepicker( dateFormat: 'dd/mm/yy', onSelect: function (dt, inst) $('#blahList').data('tGrid').rebind( ndate: dt ); );哪个会根据所选日期更改显示的记录? @Myzifer,如果您在成功回调中使用 AJAX,您可以将 DOM 的任何部分替换为新内容,仅包括网格。 它是一个 ajax 数据绑定,但问题是我认为我需要创建一个隐藏的或者可能是一个隐藏的并存储重新绑定的日期,以便刷新将根据该日期刷新网格对吗? 它如何请求排序、分组、分页参数?它将请求“非常”新鲜的网格。 当我有机会时,我会尝试一下,但这样我就不会忘记将这个问题标记为已回答,因为这个答案有我正在使用的临时解决方案,并且可能是最好的解决方案这只是刷新网格并在计时器上然后我将其标记为正确答案。【参考方案2】:

保持简单,当你需要刷新网格时调用refreshGrid()函数。

function refreshGrid() 
    if ($(".t-grid .t-refresh").exists()) 
        $(".t-grid .t-refresh").trigger('click');
    


/*return true if does selected element exist.*/
(function ($) 
    $.fn.exists = function ()  return jQuery(this).length > 0; 
)(jQuery);

【讨论】:

【参考方案3】:
    setTimeout(function()
      window.location.reload();
   ,300000);

【讨论】:

如果它直接工作而没有问题,那么我可能会一直使用它,直到我可以让 Darin 的解决方案正常工作,除非这个超时位是否意味着它是空闲状态超时? 表示传递的函数将在5分钟后被调用,仅此而已。我已经纠正了一点。我在 window.reload() 中有错误。必须调用 window.location.reload()。 你知道我将如何代替 window.location.reload() 而是将它绑定到网格本身以重新加载,因为我有 $("#cal").datepicker( dateFormat: 'dd/mm/yy', onSelect: function (dt, inst) $('#BlahList').data('tGrid').rebind( ndate: dt ); );这会将显示的记录更改为所选日期,但如果可能的话,我想通过重新加载网格将所选日期绑定到重新加载中。【参考方案4】:

如果您的网格设置为 ajax 刷新,那么您可以使用类似

    <script type="text/javascript">
        $(function() 
            setInterval(function() 
                $('#GridName').data('tGrid').ajaxRequest(); 
            , 300000);
        ); 
    </script>   

【讨论】:

【参考方案5】:

For Server Bindings Telerik Grid 只需要做下面的事情.....随便用,干杯

在任何事件之后你都可以调用它

   var href = $('.t-refresh').attr('href');
    window.location.href = href;

【讨论】:

【参考方案6】:

如果您在 Telerik Grid 上使用 Ajax 或 Webservice 绑定,则可以在网格对象上调用 rebind() 方法。这将迫使它再次调用绑定的 Select 方法以获取最新数据。

如果您将 rebind() 调用与 Darin 的使用 SetInterval 方法的答案结合起来,它应该会为您提供您所追求的。

【讨论】:

以上是关于用于刷新页面和/或 Telerik 网格的 JavaScript 代码的主要内容,如果未能解决你的问题,请参考以下文章

Telerik Kendo Grid (MVC) 更新后刷新

当我们将 Telerik 网格与 LinqDataSource 一起使用时,如何在页面的各种按钮单击事件上重新生成网格数据

Telerik/ Kendo MVC Grid,按需加载网格,而不是页面加载

带有复选框的 Telerik 网格 - 网格最初绘制时复选框未显示

如何委托telerik网格视图常用方法从每个子页面的父页面调用?

用于 jquery 的 Telerik Kendo 网格不显示数据