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

QQ登录

只需一步,快速开始

CloudJSTI

金牌服务用户

36

主题

98

帖子

332

积分

金牌服务用户

积分
332
CloudJSTI
金牌服务用户   /  发表于:2023-4-26 17:19  /   查看:861  /  回复:6
我现在的场景是单元格的值发生改变,触发ValueChanged,然后自适应行高,我试了下只有用户用键盘输入才能触发,代码赋值的行为是触发不了的;


  1.   autoFitRowOnValueChanged: function (workbook) {
  2.       const sheetCount = workbook.getSheetCount();
  3.       for (let i = 0; i < sheetCount; i++) {
  4.         const sheet = workbook.getSheet(i);
  5.         sheet.bind(
  6.           GC.Spread.Sheets.Events.ValueChanged,
  7.           function (sender, args) {
  8.             const rowIndex = args.row;
  9.             sheet.autoFitRow(rowIndex);
  10.           }
  11.         );
  12.       }
  13.     },
复制代码
还有一种情况就是B单元格的值根据A单元格的值变化,这种情况也是用户自己在A单元格输入的时候可以触发,但是代码对A单元格赋值的话,就触发不了B单元格的公式

  1. =IF(D19="","",IFERROR(INDEX(B28:B51,MATCH(D19,A28:A51,0)),""))
复制代码


6 个回复

倒序浏览
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-4-26 17:53:22
沙发
您好,
问题1:
事件设计上是由UI行为触发的,
像setDataSource这类代码赋值属于同步的方法,您可以直接在后面执行自适应行高的逻辑,不需要通过事件监听再来执行。
问题2:
可以通过公式追踪来监听对于公式值的变动,可以参考这篇文章:
https://gcdn.grapecity.com.cn/fo ... 8&fromuid=59119
回复 使用道具 举报
CloudJSTI
金牌服务用户   /  发表于:2023-4-27 09:14:54
板凳
问题一:
使用setDataSource的时候有什么好的方法区自适应高度吗,autoFitRow得有入参行才行,但是我的表格是动态的,我此时不知道我赋值的单元格是哪一行的
回复 使用道具 举报
CloudJSTI
金牌服务用户   /  发表于:2023-4-27 09:22:29
地板
问题二:
首先我的表格的数量很多,所以我很难对应一套表格一套代码的方式去使用公式追踪,对于这种代码对单元格赋值,不会引起公式反应的情况,有没有在workboos级或者sheet级的绑定方法,不绑定在具体的单元格上
回复 使用道具 举报
CloudJSTI
金牌服务用户   /  发表于:2023-4-27 10:20:07
5#
第一个问题解决了,现在还剩下第二个问题
回复 使用道具 举报
CloudJSTI
金牌服务用户   /  发表于:2023-4-27 11:17:43
6#
哪位大佬帮我看下第二个问题啊
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-4-27 15:48:18
7#
本帖最后由 Lynn.Dou 于 2023-4-27 15:52 编辑

注意到关于此问题您另开了新帖,后续在新帖中交流:
https://gcdn.grapecity.com.cn/fo ... 5&fromuid=59119

另,论坛贴子监听插件是根据发帖时间依次显示的,建议您不要顶贴,不然贴子反而置于下方了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部