使用easyui,关于datagrid加载慢及layout里有datagrid时展开卡顿问题优化

        datagrid有个属性autoRowHeight,其作用描述为:“定义是否设置基于该行内容的行高度。设置为 false,则可以提高加载性能”,默认值为true。

问题描述

        当layout布局里有datagrid或treegrid时,若autoRowHeight设置为true,展开layout布局时可能出现卡顿情况,特别在datagrid的行记录数量大时更为明显。

原因分析

        当展开layout时,通过调试工具的性能记录结果如下:

使用easyui,关于datagrid加载慢及layout里有datagrid时展开卡顿问题优化

使用easyui,关于datagrid加载慢及layout里有datagrid时展开卡顿问题优化

可以看到展开时,"_478"方法的耗时占了很大比重(其主要在计算行样式的高度、宽度,共3000ms+,造成画面卡顿、卡死,这是无法接受的),通过调试器的调用堆栈:

使用easyui,关于datagrid加载慢及layout里有datagrid时展开卡顿问题优化

可跟踪到调用"_478"的方法"_474",其中有判断autoRowHeight的值。

当把autoRowHeight参数设为false时,则不再执行"_478方法",展开layout性能记录如下:

使用easyui,关于datagrid加载慢及layout里有datagrid时展开卡顿问题优化

可以看到在110ms左右即完成展开,展开过程无卡顿现象。

解决

datagrid的autoRowHeight参数设为false。


其它优化拓展

datagrid的columns属性的width参数也应该设置一个宽度值,提高加载性能。


##############相互学习交流,以上内容有错误请指点#############

版权:原创文章,未经博主允许不得转载。https://blog.csdn.net/RONEL9/article/details/80241631