找回密码
 立即注册

QQ登录

只需一步,快速开始

Wilson.Zhang
超级版主   /  发表于:2024-10-31 18:11  /   查看:121  /  回复:0
本帖最后由 Wilson.Zhang 于 2024-10-31 20:30 编辑

SpreadJS通过RowHeightChanged事件监听单元格行高变化,可以在监听到该事件发生时实施相关业务逻辑。然而,通过光标拉伸行边框线以调整行高和自适应行高均可以触发RowHeightChanged事件。那么,如何区分事件发生时的触发动作是哪种呢?

面对这种判断问题,可以在代码中增设一个全局变量以标识,具体思路如下:

1. 设定autoFitRowFlag变量,以记录是否为代码侧通过Worksheet:autoFitRow()自适应行高,默认为false。
2. 在通过代码调用Worksheet:autoFitRow()前,将autoFitRowFlag置为true。
3. 在RowHeightChanged事件处理函数中,判断autoFitRowFlag变量的值:
3.1. 如果为true,意味着通过代码侧自适应行高,则可执行相关业务逻辑,并在处理完相关业务逻辑前或后设置其为false。
3.2. 如果为false,则通过UI菜单按钮或光标拉伸行边框线调整行高,则可执行相关业务逻辑。

将上述方案转为代码,如下代码所示:

  1. var autoFitRowFlag = false;
  2. sheet.unbind(GC.Spread.Sheets.Events.RowHeightChanged);
  3. sheet.bind(GC.Spread.Sheets.Events.RowHeightChanged, function(e, args) {
  4.     console.log('row height changed, args: ', args);
  5.     if (autoFitRowFlag) {
  6.         // Worksheet:autoFitRow()自适应行高
  7.        console.log('auto fit row');
  8.        autoFitRowFlag = false;
  9.     } else {
  10.         //  UI菜单按钮或光标拉伸行边框线调整行高
  11.         console.log('manual set row height');
  12.     }
  13. });
复制代码

这个方法略显粗糙,虽然能够辨别动作源是Worksheet:autoFitRow()调整行高,但无法分辨触发源是UI菜单按钮和光标拉伸动作中的哪一个。

问题原帖:https://gcdn.grapecity.com.cn/forum.php?mod=viewthread&tid=227636

0 个回复

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