找回密码
 立即注册

QQ登录

只需一步,快速开始

Mrluo

初级会员

23

主题

62

帖子

213

积分

初级会员

积分
213
Mrluo
初级会员   /  发表于:2023-9-18 15:36  /   查看:760  /  回复:4
1金币
本帖最后由 Richard.Ma 于 2023-9-22 15:27 编辑

参考这个demo 自定义数据校验 - JS CodeMine (grapecity.com)


当设置单元格1.1添加自定义校验的时候,点击 其他的列,比如2,2 3,3这些,自定义的evaluate都会回调


  1. // 用户自定义数据校验条件
  2. function CustomerCondition() {
  3.     var self = this;
  4.     // 当前自定义条件名称
  5.     self.conditionType = "CustomerCondition";
  6. }
  7. CustomerCondition.prototype = new GC.Spread.Sheets.ConditionalFormatting.Condition();
  8. CustomerCondition.prototype.evaluate = function (evaluator, baseRow, baseColumn, actualValue) {
  9.     console.log(Math.random())
  10.     // 在此设置判断条件,非数判断
  11.     if (isNaN(parseFloat(actualValue))) {
  12.         return false;
  13.     } else {
  14.         return true;
  15.     }
  16. }
复制代码
  1.     // 以下是添加数据校验的代码部分:
  2.     // 先设置高亮显示
  3.     spread.options.highlightInvalidData = true;
  4.     // 创建校验条件,自定义
  5.     var cCondition = new CustomerCondition();
  6.     var validator1 = new GC.Spread.Sheets.DataValidation.DefaultDataValidator(cCondition);
  7.     validator1.ignoreBlank(false);
  8.     validator1.type(GC.Spread.Sheets.DataValidation.CriteriaType.custom);

  9.     sheet.setDataValidator(1, 1, validator1);
复制代码


最佳答案

查看完整内容

您好,这是目前的设计使然,验证是通过渲染触发的,因此需要在每次渲染后检查是否需要渲染数据验证的高亮样式。

4 个回复

倒序浏览
最佳答案
最佳答案
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-9-18 15:36:07
来自 5#
您好,这是目前的设计使然,验证是通过渲染触发的,因此需要在每次渲染后检查是否需要渲染数据验证的高亮样式。
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-9-18 17:31:32
2#
您好,您这边具体的需求是什么呢?是只想让其在被修改的时候才去执行吗?
回复 使用道具 举报
Mrluo
初级会员   /  发表于:2023-9-18 17:58:22
3#
我自定义的一个检验,但是我希望只有这个单元格值变化才执行,现在的情况是我随便点击任意单元格都回调了
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-9-19 09:59:48
4#
了解了,这边调研一下,后续有进展我会在本帖中回复您。

本帖先做保留处理了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部