找回密码
 立即注册

QQ登录

只需一步,快速开始

一碗小米粥丶

金牌服务用户

8

主题

12

帖子

60

积分

金牌服务用户

积分
60

[已处理] 重新设置Validator

一碗小米粥丶
金牌服务用户   /  发表于:2019-6-14 17:13  /   查看:2371  /  回复:1
对某个单元格设置了Validator,当条件改变的时候,需要兑这个单元格重新设置另外一个Validator,如何实现?例如之前对某个单元格设置非空的校验,当满足某个条件下,想要对这个单元格设置数字的校验,类似这种情景如何实现?

1 个回复

倒序浏览
Fiooona
论坛元老   /  发表于:2019-6-17 11:00:10
沙发
如果只是非空校验,可以设置:
   dv1.ignoreBlank(false);
这样空数据也可以触发验证。按您说的逻辑,可以参考以下的代码:
  1.    var spread = new GC.Spread.Sheets.Workbook(document.getElementById("ss"));
  2.         var sheet = spread.getActiveSheet();
  3.         spread.options.highlightInvalidData = true;

  4.         var dv = GC.Spread.Sheets.DataValidation.createTextLengthValidator(GC.Spread.Sheets.ConditionalFormatting.ComparisonOperators.greaterThan, "4");
  5.         dv.showInputMessage(true);
  6.         dv.inputMessage("Number of characters must be greater than 4.");
  7.         dv.inputTitle("tip");
  8.         dv.ignoreBlank(false);
  9.         sheet.setDataValidator(1, 1, 1, 1, dv, GC.Spread.Sheets.SheetArea.viewport);
  10.         sheet.bind(GC.Spread.Sheets.Events.CellChanged, function (e, info) {
  11.             if(dv.isValid(sheet, 1,1 , sheet.getCell(1,1).value()) == true){ // 验证成功
  12.                 var dv1 = new GC.Spread.Sheets.DataValidation.createListValidator('Fr,Vegetable,Food');
  13.                 dv1.ignoreBlank(false);
  14.                 sheet.setDataValidator(1,1, dv1);
  15.             }  
  16.             else{
  17.              sheet.setDataValidator(1, 1, 1, 1, dv, GC.Spread.Sheets.SheetArea.viewport);
  18.             }
  19.         });
  20.         
复制代码
组件化表格编辑器(预览版)试用进行中,点击了解详情!
请点击评分,对我的服务做出评价!5分为非常满意!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部