easyui datagrid

最近在使用easyui datagrid途中发现加载数据的效率真的不是一般的差。经测试IE8加载300条数据就感觉明显的慢了,加载2000条数据就另人崩溃用时差不多60秒,就算在google浏览器测试结果也快不了几秒。 平时听闻easyui datagrid效率底下,自己测试才发现真是使人无法忍受。

笔者只好百度,google解决方法,发现一篇文章说改

  1. //1.3.3版本是这样的,其它版本也是这句代码
  2. $(_1e0).html(_1e4.join(""));

    改为:

    1. $(_1e0)[0].innerHTML = _1e4.join(""); 笔者找了类似的地方修改,测试后结果还是一样。没有任何效果,可能是跟作者的版本不同,我的是1.3版,作者是的1.33版。

      忙了半天,只好自己续步调试追踪。经过努力终于找到了导致慢的真正凶手。真正造成慢的代码如下:

      for (var i = 0; i < trs2.length; i++) {
      var tr1 = $(trs1[i]);
      var tr2 = $(trs2[i]);
      tr1.css("height", "");
      tr2.css("height", "");
      var _43f = Math.max(tr1.height(), tr2.height());
      tr1.css("height", _43f);
      tr2.css("height", _43f);
      }

      看代码就清楚,上面是对比表格中两行的高度,然后把高的赋值给各行。

      解决:凶手找到了,怎样解决呢?笔者是直接屏蔽她们的对比和赋值。让浏览器自动适应高度吧。

      如下(7241行):

      /*for (var i = 0; i < trs2.length; i++) {

      var tr1 = $(trs1[i]);
      var tr2 = $(trs2[i]);
      tr1.css("height", "");
      tr2.css("height", "");
      var _43f = Math.max(tr1.height(), tr2.height());
      tr1.css("height", _43f);
      tr2.css("height", _43f);

      }*/


      好了,屏蔽后。让我们测试效率。测试一万条记录,测试代码片段如下:

      var obj = { 'total': 100, 'rows': [{ id: '1', name: '一' }, { id: '2', name: '二'}] };
      for (var i = 0; i < 10000; i++) {
      var row = ({ id: 'id' + i, name: '一' });
      obj.rows.push(row);
      }
      $('#tt').datagrid({
      url: null,
      pagination: true,
      pageSize: 20,
      pageNumber: 1,
      rownumbers: true,
      fitColumns: false,
      columns: [[
      { field: 'id', title: 'id', width: 100 },
      { field: 'name', title: 'Name', width: 100 }
      ]]
      });
      $('#tt').datagrid('loadData', obj);

      好了,现在是10000条记录啊,IE8只用10秒不到加载完成。改成3000条记录,只要1~2秒加载完成。

      结论:把那该死设置高度代码直接屏蔽。嘻嘻,有惊喜。EASYUI版本:1.3.5版


      另外:

      设置datagrid的每一列的width属性,不用让他自适应,取消所有自适应的选项,会很大程度上提高easyui的显示效率,我试过在IE上显示500条数据,效率是能接受的。在firefox上显示2000条都是能接受的,但是IE上超过500条就无法忍受了,所以建议你在IE上一次不要超过300条数据。

      如果非要自适应的话,那就按比例来适应,先获取window的宽度winWidth,在winWidth*0.1来设置每一列的宽度,不管怎么样,宽度一定要指定 

      简单一句话就是去掉fitColumns: true或是置为false(默认就是false),并指定每列的width,显示效率会大大提高

  3. 转:http://zhouyj668.blog.163.com/blog/static/112523280201411911580515/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值