本帖最后由 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菜单按钮或光标拉伸行边框线调整行高,则可执行相关业务逻辑。
将上述方案转为代码,如下代码所示:
- var autoFitRowFlag = false;
- sheet.unbind(GC.Spread.Sheets.Events.RowHeightChanged);
- sheet.bind(GC.Spread.Sheets.Events.RowHeightChanged, function(e, args) {
- console.log('row height changed, args: ', args);
- if (autoFitRowFlag) {
- // Worksheet:autoFitRow()自适应行高
- console.log('auto fit row');
- autoFitRowFlag = false;
- } else {
- // UI菜单按钮或光标拉伸行边框线调整行高
- console.log('manual set row height');
- }
- });
复制代码
这个方法略显粗糙,虽然能够辨别动作源是Worksheet:autoFitRow()调整行高,但无法分辨触发源是UI菜单按钮和光标拉伸动作中的哪一个。
问题原帖:https://gcdn.grapecity.com.cn/forum.php?mod=viewthread&tid=227636 |
|