Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 1013|回复: 0

EasyUI 1.4.4 DataGrid(大数据量) bufferview滚动时不加载下一页数据解决方案

[复制链接]
  • TA的每日心情
    奋斗
    2024-4-6 11:05
  • 签到天数: 748 天

    [LV.9]以坛为家II

    2034

    主题

    2092

    帖子

    70万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    705612
    发表于 2021-6-7 18:32:22 | 显示全部楼层 |阅读模式

      在使用Easyui DataGrid 过程中,发现若单页数据量超过300,IE浏览器加载速度很慢。也通过网上找寻了很多解决方案,最典型的就是去掉datagrid的自动列宽以及自动行高判断。

      1、解决自动列宽:  设定列宽度可解决。

      2、解决自动行高 : 注释掉下面的代码。

     1 function _3e(_44,_45){
     2 //for(var i=0;i<_45.length;i++){
     3 ////var tr1=$(_44);
     4 ////var tr2=$(_45);
     5 ////tr1.css("height","");
     6 ////tr2.css("height","");
     7 ////var _46=Math.max(tr1.height(),tr2.height());
     8 ////tr1.css("height",_46);
     9 ////tr2.css("height",_46);
    10 //}
    11 };

      使用上述两种解决办法后,加载速度有所改观,但效果不是很明显。后来使用了datagrid的scrollview和bufferview视图,scrollview效果仍然不太好,但使用了bufferview后,效果相当明显,最终选定使用bufferview来加载单页数据,速度虽然解决了,遇到了另外一个问题,原有的DataGrid做了分页处理,bufferview在滚动条拉到最底部时候,会自动加载下一页数据,我已经有了对datagrid的分页处理,所以这个功能不需要,经多次尝试,解决方案如下:

     1 function scrolling(){
     2             if (getDataHeight() < dc.body2.height() && view.renderedCount < state.data.total){
     3                 this.getRows.call(this, target, function(rows){
     4                     this.rows = rows;
     5                     this.populate.call(this, target);
     6                     dc.body2.triggerHandler('scroll.datagrid');
     7                 });
     8             } else if (dc.body2.scrollTop() >= getDataHeight() - dc.body2.height()) {
     9                 //  注释掉下面代码是为了滚动时不加载下一页数据
    10                 //this.getRows.call(this, target, function(rows){
    11                 //    this.rows = rows;
    12                 //    this.populate.call(this, target);
    13                 //});
    14             }
    15         }

      将scrolling方法中的else if 里面的代码块注释掉就可以了。

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-4-29 00:29 , Processed in 0.082253 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表