Winny 发表于 2022-5-20 21:03:48

SpreadJS运行时数据验证失败弹框实现方案

excel中添加数据验证后,当数据验证不通过时,可以选择将不合法信息以弹框的形式弹出。如下所示:
将该文件导入在线表格编辑器(设计器),也就是包含工具栏的组件中,数据验证失败时,弹框会正常显示,如下所示:

但是如果将该文件导入SpreadJS运行时中,数据验证失败时,这个弹框就不会再弹出了,这是因为这种弹框在SpreadJS中,属于专门为在线表格编辑器而设计的,而只是使用SpreadJS运行时的时候,是没有内置这些弹框的,并不属于产品bug,是一种设计思想。


但是,当客户使用SpreadJS运行时,依旧想要在数据验证失败时,弹出对应的错误时,是否有其它方案可以实现呢?答案肯定时可以的,因为文件本身数据验证的这些错误提示信息都是能拿到的,我们只需要当用户在目标单元格输入内容时,使用api去判断数据验证是否通过,不通过时,使用alert或者其它模态框将错误信息提示出来即可。详细代码如下:
sheet.bind(GC.Spread.Sheets.Events.ValueChanged,function(sender,args){
    let {row,col,newValue} = args
    // B11单元格中包含数据验证
    if(row==10&&col==1){
      //判断数据验证是否通过
      let isValid = sheet.isValid(row,col,newValue)
      if(!isValid){
            //数据验证失败时 弹出错误信息
          alert(sheet.getCell(row,col).validator().errorMessage());
          //清空单元格内容
          sheet.setValue(row,col,null)
      }
    }
})详细实例参考:在线测试-spreadjs数据验证失败弹框
页: [1]
查看完整版本: SpreadJS运行时数据验证失败弹框实现方案