2016-03-15 75 views
0

我收到一个问题,当我试图将大约10000条记录的数据加载到使用JSON作为数据源的JQGrid中。JQgrid完全悬挂浏览器,同时呈现

浏览器在此时冻结或未响应约5分钟。我的自定义加载程序也挂在浏览器中,页面的进度未显示。

这是确定如果jqGrid的的渲染需要时间,但我想ATLEAST显示我的装载机纺纱的进展。

尝试所有这些方法使装载机旋转..但没有任何工作。

任何人都可以帮助我显示Jqgrid渲染时的加载器。

loadui : "disable", 
     loadtext: "Loading...", 
     beforeRequest : function() { 
       $("#testGrid").block(); 

       $('.loading').show(); 

       $("#testGrid").closest(".ui-jqgrid").find('.loading').show(); 

      $(".loading").css("display", "block"); 

      $(this).block({ 
       message: '<img src="/images/loader.gif" />', 
      });   }, 

感谢,

+0

哪个版本的jqGrid和从哪个fork([free jqGrid](https://github.com/free-jqgrid/jqGrid),[Guriddo jqGrid JS](http://guriddo.net/?page_id=103334) )或者使用<= 4.7版本的旧版jqGrid)?你的代码在哪里?您使用哪种页面大小('rowNum')?你有'loadComplete'或'gridComplete'回调(它经常是瓶颈)?网格有多少列? ...在jqGrid中对数据的纯处理应该像[演示]一样快速(http://www.ok-soft-gmbh.com/jqGrid/OK/performane-13-40000-20-free-jqgrid。 htm)(13列,40000行,一页20行)。 – Oleg

+0

@Oleg gridComplete花费可怕的时间来渲染行,因为我们对每一行都有很多设计验证。我有20列和10,000条记录。 – Sandy

+0

@Oleg我没有使用分页王的东西,所有的数据必须在一次处理。或者有什么办法在ggridcomplete事件中显示加载器? – Sandy

回答

1

我建议你做到以下几点:数据

  1. 使用本地寻呼:只使用rowNum: 20例如和height: "auto"
  2. 一个永远也不会修改数据在loadCompletegridComplete内的循环中的网格。取而代之的是一个应该使用rowattr设置行的CSS样式(指定类)(见the answer)和cellattr设置CSS样式(指定类)(见the answer)的代码示例一些列的单元格。
  3. 升级的free jqGrid最新版本(这是4.13.1现在)

如果您填写网页上更多的行,用户可以看到,那么你只强制做不必要的工作。它使页面缓慢。如果修改一个带有10000个元素的页面元素,则Web浏览器必须重新计算所有其他9999元素的样式和位置。如果你在循环中进行这样的修改,那么你使页面非常慢。

相关问题