在使用easyui datagrid途中发现加载数据的效率真的不是一般的差。经测试IE8加载300条数据就感觉明显的慢了,加载2000条数据就另人崩溃用时差不多60秒,就算在google浏览器测试结果也快不了几秒。 平时听闻easyui datagrid效率底下,自己测试才发现真是使人无法忍受。
笔者只好百度,google解决方法,发现一篇文章说改
//1.3.3版本是这样的,其它版本也是这句代码
$(_1e0).html(_1e4.join(""));
改为:
$(_1e0)[0].innerHTML = _1e4.join(""); 笔者找了类似的地方修改,测试后结果还是一样。没有任何效果,可能是跟作者的版本不同,我的是1.3版,作者是的1.33版。
忙了半天,只好自己续步调试追踪。经过努力终于找到了导致慢的真正凶手。真正造成慢的代码如下:
function _58b(trs1,trs2){ for(var i=0;i<trs2.length;i++){ var tr1=$(trs1[i]); var tr2=$(trs2[i]); tr1.css("height",""); tr2.css("height",""); var _591=Math.max(tr1.height(),tr2.height()); tr1.css("height",_591); tr2.css("height",_591); } };
看代码就清楚,上面是对比表格中两行的高度,然后把高的赋值给各行。
解决:凶手找到了,怎样解决呢?笔者是直接屏蔽她们的对比和赋值。让浏览器自动适应高度吧。
如下:
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只用1秒不到加载完成。改成3000条记录,只要1~2秒加载完成。
结论:把那该死设置高度代码直接屏蔽。嘻嘻,有惊喜。EASYUI版本:1.3版,1.5版本
http://love398146779.iteye.com/blog/2067515
相关推荐
本文主要探讨如何针对EasyUI datagrid进行性能优化,以解决大数据量加载慢的问题。 首先,我们需要理解问题的根源。当datagrid加载大量数据时,如果未进行优化,其内部的某些功能,如行高自动调整,可能导致性能...
- 该方法中使用了`:has`伪选择器来查找已勾选的行,但在大数据量情况下,这种选择器的查找效率较低。 **优化方案一:改进选择器** - **实现方法**:考虑到Checkbox列的DOM结构是固定的,可以通过更高效的选择器来...
在使用easyui的treegrid或datagrid的过程经常会有这样的场景,如:需要按不同的类型加载数据时,如果选择的分类下没有数据应该把上次展示的数据清空,以免引用歧义。下面给出两种方法供初学者参考: 方法一: var...
在jQuery EasyUI中,`datagrid`是一个非常常用的组件,用于展示和管理表格数据。本教程主要讲解如何在`datagrid`加载或查询数据时,如果没有任何匹配的记录,如何自定义显示提示信息,而不是呈现空的表格。这有助于...
项目初期在加载数据表格的时候为了提高表格数据渲染速度,设置了默认宽度。 现需求需要加一个表格自适应的功能,触发改功能,改变列宽度,但是不重新渲染表格,不发生数据请求。 设计思路,遍历每项的所有数据,...
在网页开发中,数据的展示是至关重要的,特别是在大数据时代,如何有效地呈现JSON(JavaScript Object Notation)数据,使得用户可以清晰地理解信息,成为了一项基础技能。本篇文章将探讨如何利用HTML标签、jQuery-...
- 与EasyUI的datagrid相比,Flexigrid在样式定制上可能略显不足,但其代码结构更清晰,对于简单的表格需求更易于上手。 5. **实例应用** Flexigrid常被用于后台管理系统、数据分析平台等需要展示大量结构化数据的...