找回密码
 立即注册

QQ登录

只需一步,快速开始

zhangjintao

注册会员

18

主题

45

帖子

147

积分

注册会员

积分
147
zhangjintao
注册会员   /  发表于:2018-11-27 16:12  /   查看:4081  /  回复:6
            var spread3 = $('#ss').data('workbook');
            spread3.bind(GC.Spread.Sheets.Events.RowChanged, function (e, info)
            {
                if (info.sheetArea === GC.Spread.Sheets.SheetArea.viewport)
                {
                    spread3.getActiveSheet().copyTo(info.row + 1, 0, info.row, 0, 1, spread3.getActiveSheet().getColumnCount(), GC.Spread.Sheets.CopyToOptions.all);
                    var rh = spread3.getActiveSheet().getRowHeight(info.row + 1, GC.Spread.Sheets.SheetArea.viewport);
                    alert(spread3.getActiveSheet().getColumnCount());
                    spread3.getActiveSheet().setRowHeight(info.row, 50, GC.Spread.Sheets.SheetArea.viewport);
                }
            });


执行代码后,会不停的执行下去,是不是最后一句代码调整行高导致了事件的重复执行?如果是,调整行高代码如何处理?

另外我们使用了sheet.options.isProtected = true;进行锁定,使用sheet.getCell(i, j).locked(true);进行例外单元格的解锁。但是使用CopyToOptions.all之后,被复制行未锁定的单元格在新行中还是被锁定状态,求解谢谢

6 个回复

倒序浏览
zhangjintao
注册会员   /  发表于:2018-11-27 16:19:58
沙发
如图
TIM截图20181127161822.png
回复 使用道具 举报
zhangjintao
注册会员   /  发表于:2018-11-27 16:22:09
板凳
image.png595032958.png
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2018-11-27 17:12:00
地板
您使用的事件是RowChanged事件,而在事件中又调用了setRowHeight去改变row,当然会触发无限递归。

解决办法有两个,

1、仍然采用 RowChanged 事件,在function中加一个判断的flag来判断是否已经更改过行高,如果已经改过,就不要再继续执行逻辑。

2、换一个事件实现,目前不清楚您代码逻辑,不知道您设计的触发条件是什么,可以参考Spread JS支持的Events,看哪个事件比较合适:
http://help.grapecity.com/spread ... .Sheets.Events.html

另外,copyTo即使指定了all,也不会把源单元格的锁定状态带到目标单元格中,这是Spread JS的安全策略,如果需要更改目标单元格的锁定状态,可以手动调用getCell().locked()来更改。
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2018-11-27 17:28:52
5#
您好,对于您事件中发生递归的情况,还有一个更简单的解决方案,

您可以在setRowHeight之前挂起事件,之后再回复事件即可,

我做了一个Demo,上传到附件中,您参考一下。

SuspendEvent.html

1.66 KB, 下载次数: 181

回复 使用道具 举报
zhangjintao
注册会员   /  发表于:2018-11-27 17:33:46
6#
完美解决,谢谢
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2018-11-27 17:44:35
7#
不客气,很高兴解决了您的问题,本帖我结贴了~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部