找回密码
 立即注册

QQ登录

只需一步,快速开始

gnip

高级会员

139

主题

367

帖子

1166

积分

高级会员

积分
1166
gnip
高级会员   /  发表于:2024-11-6 15:29  /   查看:167  /  回复:8
1金币
本帖最后由 Wilson.Zhang 于 2024-11-7 09:10 编辑

产品:SpreadJS
版本:17.1.8
调研编号:SJS-27195
Last Review:2024-11-07
当前进展:非功能问题,切换sheet时同步更换活动sheet页及其选择状态。

这个sheetTab的事件里面有没有切换之前的事件呢?想要在切换前处理部分逻辑,根据逻辑正确与否决定是否要完成切换 image.png218405150.png

8 个回复

倒序浏览
Wilson.Zhang
超级版主   /  发表于:2024-11-6 16:26:39
沙发
本帖最后由 Wilson.Zhang 于 2024-11-6 16:34 编辑

您好!可以使用ActiveSheetChanging事件监听,该事件能够监听到Sheet切换过程中的新旧sheet,分别记为newSheet和oldSheet,如果判断逻辑与新旧sheet有关,则可使用这两个属性。通过对事件参数args.cancel属性设置为true即可拦截表单切换,如下图所示:


1730881578246.png357382201.png

测试发现该事件在实际使用时存在一点儿问题,如下动图所示,确实可以拦截表单切换,拦截之后活动表单仍然是切换前的sheet,但是目标切换表单的页签背景有变化。我们正在调研这个现象,调研编号为SJS-27195。调研过程需要一些时间,之后会及时向您同步结论,请您耐心等候。

切换表单拦截.gif


回复 使用道具 举报
gnip
高级会员   /  发表于:2024-11-6 16:38:03
板凳
Wilson.Zhang 发表于 2024-11-6 16:26
您好!可以使用ActiveSheetChanging事件监听,该事件能够监听到Sheet切换过程中的新旧sheet,分别记为newSh ...

发现了,用这个会有上面的现象
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-11-6 17:41:54
地板
gnip 发表于 2024-11-6 16:38
发现了,用这个会有上面的现象

正在调研了,之后会及时向您同步结论,请您耐心等候。
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-11-7 09:09:24
5#
您好!经调研,了解到切换sheet时涉及到sheet的选择状态,在阻隔切换动作时,需要一并阻截sheet的选择状态变更情况,请参考如下代码:
  1. spread.bind(GC.Spread.Sheets.Events.ActiveSheetChanging, function (sender, args) {
  2.     console.log('active sheet changing, args: ', args);
  3.     args.newSheet.isSelected(false);
  4.     args.oldSheet.isSelected(true);
  5.     args.cancel = true;
  6. });
复制代码
回复 使用道具 举报
gnip
高级会员   /  发表于:2024-11-7 17:33:17
6#
Wilson.Zhang 发表于 2024-11-7 09:09
您好!经调研,了解到切换sheet时涉及到sheet的选择状态,在阻隔切换动作时,需要一并阻截sheet的选择状态 ...

好像不支持异步操作 image.png112148131.png 我这里写了不管用,样式应用上了但是没切过去
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-11-8 08:40:26
7#
gnip 发表于 2024-11-7 17:33
好像不支持异步操作我这里写了不管用,样式应用上了但是没切过去

那您是通过代码设置活动表单来实现切换sheet或sheetTab吗?如果是这样的话,ActiveSheetChanging事件无法监听到代码切换,可以监听到通过UI触发的切换动作。而且,通过代码切换的话,应该可以在切换前完成校验逻辑。
回复 使用道具 举报
gnip
高级会员   /  发表于:2024-11-8 11:26:12
8#
本帖最后由 gnip 于 2024-11-8 11:27 编辑
Wilson.Zhang 发表于 2024-11-8 08:40
那您是通过代码设置活动表单来实现切换sheet或sheetTab吗?如果是这样的话,ActiveSheetChanging事件无法 ...

sheet点击我会弹出来这个,用户点了确定,我才让高亮到下个点击的sheet,否则停止原sheet不要动,这能做嘛?目前我是直接让跳过去,点了取消我又让调回来,所有背景我用灰色遮住了,避免让用户看到,最好的事能够直接阻塞跳转,点了按钮才让跳,目前我这个做法背景不透明,用户觉得不好看,让透明,就会看到已经跳转了,很奇怪 image.png644279174.png
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-11-8 15:18:23
9#
gnip 发表于 2024-11-8 11:26
sheet点击我会弹出来这个,用户点了确定,我才让高亮到下个点击的sheet,否则停止原sheet不要动,这能做 ...

根据您的描述,我理解您需要在点击sheet页签切换表单时先弹出提示信息弹框,用户点击了提示框中的确定按钮才将sheet切换至目标sheet页。那么,您尝试下如下思路:

1. 对Workbook注册ActiveSheetChanging事件,拦截切换表单同时弹出提示信息弹框,并记录试图切换的sheet信息,即监听参数中的newSheet。
2. 对提示弹框中的“确定”按钮绑定click事件,在事件被触发时对Workbook设置活动表单为newSheet,同步更新选择状态。

如下动图所示,点击提示框中的“确定”按钮即可正常切换,点击“取消”按钮便不切换表单。附上demo,以供参考。
切换表单控制.gif

表单切换.html

6.06 KB, 下载次数: 3

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部