请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

jiabingtian

注册会员

9

主题

20

帖子

71

积分

注册会员

积分
71
jiabingtian
注册会员   /  发表于:2017-10-17 10:45  /   查看:4893  /  回复:4
页面上可以选择多行或者多列,通过双击列或者行进行列宽或者行高的自适应调节,
通过代码使用sheet.autoFitColumn(i)和sheet.autoFitRow(i)调节,

问题:发现使用代码处理比在页面直接调节,耗时要长挺多的,会出现明显的卡顿。
想请教下,是不是我使用的方法有问题,有没有其他的API调节行高和列宽呢

4 个回复

倒序浏览
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-10-17 13:52:27
沙发
原因应该是在调整时会进行重绘,您如果有多次调整就会造成多次的重绘这样耗时就会变长,解决方法是
通过suspendPaint方法暂停重绘,全部调整结束后在用resumePaint方法解除暂停,这样只用重绘一次,相应的性能就会提升。
相关方法使用参考文档:
http://demo.gcpowertools.com.cn/ ... samples/spreadPaint
回复 使用道具 举报
HHJ1983
注册会员   /  发表于:2017-11-24 10:42:38
板凳
请教使用sheet.autoFitColumn(i)和sheet.autoFitRow(i)调节列宽和行高自适应后,如何取消自适应?

另外我是在 GC.Spread.Sheets.Events.EditEnded 时间中绑定自适应事件的,代码是这样的://绑定单元格完成事件
        this.sheet.bind(GC.Spread.Sheets.Events.EditEnded, function (data:any, args:any) {
          this.spread.suspendPaint();
          args.sheet.getCell(args.row, args.col).wordWrap(true);
          args.sheet.autoFitRow(args.row);
          args.sheet.autoFitColumn(args.col);         
          this.spread.resumePaint();
        }.bind(this));




但是编辑单元格后行高高出很多,
QQ截图20171124103703.jpg
用鼠标双击这一行后才会得到较好的适应状态,如下图: QQ截图20171124103914.jpg

回复 使用道具 举报
HHJ1983
注册会员   /  发表于:2017-11-24 10:46:27
地板
我刚才试了下找到原因了,
我把 args.sheet.autoFitColumn(args.col); 和  args.sheet.autoFitRow(args.row); 的顺序调换了一下自适应就好了,不知道为什么会出现这样的bug。

正确代码如下:

//绑定单元格完成事件
        this.sheet.bind(GC.Spread.Sheets.Events.EditEnded, function (data:any, args:any) {
          this.spread.suspendPaint();
          args.sheet.getCell(args.row, args.col).wordWrap(true);
          args.sheet.autoFitColumn(args.col);
          args.sheet.autoFitRow(args.row);         
          this.spread.resumePaint();
        }.bind(this));

现在的问题是如何取消自适应?
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-11-24 15:01:27
5#
您好,取消自适应是一个什么样的行为我没太明白,按我的理解您是想要恢复为之前的宽高,那么您可以这样做,您在设置自适应之前先获取一下目标单元格的宽高,然后记下来,之后需要恢复的时候再手动设置宽高为之前您记录的宽高
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部