找回密码
 立即注册

QQ登录

只需一步,快速开始

hhh2024

注册会员

9

主题

25

帖子

86

积分

注册会员

积分
86
hhh2024
注册会员   /  发表于:2024-10-8 17:43  /   查看:342  /  回复:8
1金币
求问如何监听整个表单所有单元格值变化,包括普通单元格、下拉菜单单元格,使用如下代码,可以检测到编辑完的单元格值,但是下拉菜单单元格选择完后的值没法检测到
  1.   spread.commandManager().addListener('', function (config) {
  2.             console.log('config: ', config);
  3.         });
复制代码


最佳答案

查看完整内容

您好!可以使用ValueChanged事件监听,参考如下代码: 可以参考官网API文档了解详情: ValueChanged--https://demo.grapecity.com.cn/spreadjs/help/api/classes/GC.Spread.Sheets.Events#valuechanged

8 个回复

正序浏览
Wilson.Zhang
超级版主   /  发表于:2024-10-17 15:01:24
9#
您好!由于您较长时间未回复,且从跟帖回复中了解到问题已得到有效解答,那就结贴了。如有新问题,欢迎发新帖沟通。
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-10-10 15:53:26
8#
hhh2024 发表于 2024-10-9 09:43
你好,那我想通过在submitCommand中setValue方式给单元格赋值,这样怎么监测单元格值变化下。应用场景是 ...

那么,就是说级联菜单中被选中的选项的上下级要分别填充至列a和b。如果是这样的话,可以参考7楼热心用户给出的建议,不用额外监听单元格值的变化。您可以试下先,看看可否满足需求。
回复 使用道具 举报
香香
注册会员   /  发表于:2024-10-10 14:30:29
7#
hhh2024 发表于 2024-10-9 09:43
你好,那我想通过在submitCommand中setValue方式给单元格赋值,这样怎么监测单元格值变化下。应用场景是 ...

列a是级联下拉菜单单元格,选择完之后级联菜单的第一项填到列a,这个可以通过formatter实现,级联菜单选择的第二项值填到列b可以用formula实现,这样使用下拉菜单选择就会触发ValueChanged事件。代码如下,希望对您有帮助。
  1. var style = new GC.Spread.Sheets.Style();
  2.             style.cellButtons = [
  3.             {
  4.                 imageType: GC.Spread.Sheets.ButtonImageType.dropdown,
  5.                 command: "openMultiColumn",
  6.                 useButtonStyle: true,
  7.             }
  8.             ];
  9.             style.dropDowns = [
  10.             {
  11.                 type: GC.Spread.Sheets.DropDownType.multiColumn,
  12.                 option: {
  13.                     width: 700,
  14.                     height: 400,
  15.                     dataSource: dataSource,
  16.                     bindingInfos: colInfos
  17.                 }
  18.             }
  19.             ];
  20.             style.formatter = '=PROPERTY(@, "Film")';
  21.             sheet.setStyle(1, 3, style);
  22.             sheet.setFormula(1, 4, "D2.Year");
  23.             sheet.resumePaint();  
  24.             sheet.bind(GC.Spread.Sheets.Events.ValueChanged, function (e, args) {
  25.                 console.log(args);
  26.             });
复制代码

评分

参与人数 1金币 +500 收起 理由
Wilson.Zhang + 500 赞一个!

查看全部评分

回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-10-9 11:24:39
6#
hhh2024 发表于 2024-10-9 09:43
你好,那我想通过在submitCommand中setValue方式给单元格赋值,这样怎么监测单元格值变化下。应用场景是 ...

我们在17.1.6版本使用您提供的代码片段测试,在没有submitCommand的情况下,选中下拉菜单中的选项,即可将相应value填充至单元格,如下动图所示。
下拉菜单选中值填充.gif
回复 使用道具 举报
hhh2024
注册会员   /  发表于:2024-10-9 09:43:57
5#
本帖最后由 hhh2024 于 2024-10-9 10:04 编辑
Wilson.Zhang 发表于 2024-10-9 08:56
参考您提供的代码测试了,发现是submitCommand影响了ValueChanegd监听下拉菜单的选项。注意到您在submitC ...

你好,那我想通过在submitCommand中setValue方式给单元格赋值,这样怎么监测单元格值变化下。应用场景是这样的:列a是级联下拉菜单单元格,选择完之后级联菜单的第一项填到列a, 级联菜单选择的第二项值填到列b
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-10-9 08:56:49
4#
hhh2024 发表于 2024-10-8 18:38
ValueChanged监测不到下拉菜单选择的值呀,代码如下,下拉菜单选择完后没有触发ValueChanged方法

参考您提供的代码测试了,发现是submitCommand影响了ValueChanegd监听下拉菜单的选项。注意到您在submitCommand中定义的代码逻辑是将下拉菜单选项的value填充至下拉菜单所在单元格,但其实选择某选项后填充在单元格中的正是选项的value,而非text。另外,在没有submitCommand的情况下,ValueChanged监听到的下拉菜单选项变化正是选项value,如下动图所示。

下拉列表监听值.gif

回复 使用道具 举报
hhh2024
注册会员   /  发表于:2024-10-8 18:38:23
3#
Wilson.Zhang 发表于 2024-10-8 17:46
您好!可以使用ValueChanged事件监听,参考如下代码:

ValueChanged监测不到下拉菜单选择的值呀,代码如下,下拉菜单选择完后没有触发ValueChanged方法
  1. const test = (spread)=>{
  2.     let sheet = spread.getSheet(0);
  3.     let style = new GC.Spread.Sheets.Style();
  4.     style.locked = false;
  5.     style.cellButtons = [
  6.       {
  7.         imageType: GC.Spread.Sheets.ButtonImageType.dropdown,
  8.         command: 'openList',
  9.         useButtonStyle: false,
  10.       },
  11.     ];
  12.     style.dropDowns = [
  13.       {
  14.         type: GC.Spread.Sheets.DropDownType.list,
  15.         option: {
  16.           // multiSelect: true,
  17.           items: [
  18.             {text: '1', value: '1'},
  19.             {text: '2', value: '2'},
  20.             {text: '3', value: '3'}
  21.           ]
  22.         },
  23.         submitCommand: (activeSheet, value, option) => {
  24.           activeSheet.getCell(option.row, option.col).text(value);
  25.         },
  26.       },
  27.     ];
  28.     sheet.setStyle(3,1,style);
  29.     sheet.bind(GC.Spread.Sheets.Events.ValueChanged, function (e, args) {
  30.       debugger;
  31.     })
  32.   }
复制代码
回复 使用道具 举报
最佳答案
最佳答案
Wilson.Zhang
超级版主   /  发表于:2024-10-8 17:43:02
来自 2#
您好!可以使用ValueChanged事件监听,参考如下代码:
  1. sheet.bind(GC.Spread.Sheets.Events.ValueChanged, function(e, args) {
  2.     console.log('args: ', args);
  3. });
复制代码


可以参考官网API文档了解详情:
ValueChanged--https://demo.grapecity.com.cn/spreadjs/help/api/classes/GC.Spread.Sheets.Events#valuechanged
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部