幽游 发表于 2024-12-4 19:59:21

sjs单元格校验和处理问题

单元格录入数据校验只能是两位小数,显示时带千分位,同时单元格也可录入特定字符,例如录入df,回车后,触发自定义的方法,

自定义方法返回一个金额数值,清除df字符,赋值单元格为返回的金额值,请高手帮忙解答。

AKA_HSTS 发表于 2024-12-4 19:59:22

可以试试监听ValidationError 事件,然后将validationResult 设置成retry类型,例如如下代码:
sheet.bind(GC.Spread.Sheets.Events.ValidationError, function (sender, args) {
       args.validationResult = GC.Spread.Sheets.DataValidation.DataValidationResult.retry;
});

Wilson.Zhang 发表于 2024-12-5 09:29:36

您好!可以对单元格设置数值格式为保留两位小数且使用千分位分隔符的格式,如下图所示:


如果您需要对单元格中的内容判断是否以df或其他指定字符串结尾,如果是则清除结尾字符串只返回数字,那么可以使用如下公式:
=IF(RIGHT(A1,2)="df",LEFT(A1,LEN(A1)-2),A1)

幽游 发表于 2024-12-5 10:46:23

我的需求是sjs作为录入数据的工具,不能给单元格设置公式

Ellia.Duan 发表于 2024-12-5 15:11:44

您好,可以监听回车事件EditEnded,在事件中执行您的自定义方法。

幽游 发表于 2024-12-5 15:20:45

监听EditEnded,就会出现我这个帖子里的新问题。。
gcdn.grapecity.com.cn/showtopic-230620-1-1.html

Wilson.Zhang 发表于 2024-12-5 15:23:27

幽游 发表于 2024-12-5 10:46
我的需求是sjs作为录入数据的工具,不能给单元格设置公式

那尝试下监听ValueChanged事件,该事件监听到单元格中的新值newValue,进一步判断newValue是否以df结尾,如果是,则保留df之前的字符串,并且将处理后的字符串重新设置在单元格即可。如下动图所示:


可以参考如下代码:
sheet.bind(GC.Spread.Sheets.Events.ValueChanged, function(e, args) {
    console.log('value changed, args: ', args);
    if (args.newValue && args.newValue.endsWith('df')) {
      var text = args.newValue.substring(0, args.newValue.length - 2);
      console.log('text: ', text);
      sheet.setValue(args.row, args.col, text);
    }
});

幽游 发表于 2024-12-5 16:25:34

版主,是否有不满足数据检测规则,不让离开单元格编辑状态的方法

Wilson.Zhang 发表于 2024-12-6 09:37:48

幽游 发表于 2024-12-5 16:25
版主,是否有不满足数据检测规则,不让离开单元格编辑状态的方法

在数据验证中,如果当前输入在单元格中的内容未通过验证规则,除了提示预设的错误提示信息外,单元格状态仍然为编辑状态。如下动图所示:


您可以亲测了解下,如果不是您想要的效果,那么请教下您的实际需求是什么?

幽游 发表于 2024-12-6 09:57:27

版主大大,动图里的校验方式,如何通过代码设置上
页: [1] 2
查看完整版本: sjs单元格校验和处理问题