找回密码
 立即注册

QQ登录

只需一步,快速开始

mmm223

金牌服务用户

11

主题

34

帖子

107

积分

金牌服务用户

积分
107
mmm223
金牌服务用户   /  发表于:2024-7-29 19:40  /   查看:949  /  回复:2
iShot_2024-07-29_19.26.57.gif

如上面动图,在我插入几行的时候这行还是有校验的,删掉之后 它就消失了
  1. import GC from '@grapecity/spread-sheets'
  2. export default function setDataValidation(title, activeSheet) {
  3.   let fieldType = title.fieldType
  4.   let limitSize = 0
  5.   if (fieldType.includes('varchar')) {
  6.     limitSize = fieldType.match(/\d+/) ? fieldType.match(/\d+/)[0] : 0
  7.     fieldType = 'varchar'
  8.   }
  9.   if (title.fieldCode.includes('amount')) {
  10.     //金额
  11.     fieldType = 'number'
  12.   }
  13.   if (title.fieldSelectionRange) {
  14.     fieldType = 'list'
  15.   }
  16.   switch (fieldType) {
  17.     case 'date':
  18.       var dv = GC.Spread.Sheets.DataValidation.createDateValidator(GC.Spread.Sheets.ConditionalFormatting.ComparisonOperators.lessThan, new Date(3000, 1, 1));
  19.       dv.showInputMessage(true);
  20.       dv.inputMessage("请输入日期格式");
  21.       dv.inputTitle("提示");
  22.       activeSheet.getCell(-1, title.fieldSort - 1).validator(dv);
  23.       activeSheet.getCell(0, title.fieldSort - 1).validator(null);
  24.       activeSheet.setFormatter(-1, title.fieldSort - 1, 'yyyy-mm-dd');
  25.       break;
  26.     case 'number':
  27.       var dv = GC.Spread.Sheets.DataValidation.createNumberValidator(GC.Spread.Sheets.ConditionalFormatting.ComparisonOperators.lessThan, "9999999999999", false);
  28.       dv.showInputMessage(true);
  29.       dv.inputMessage("请输入数字");
  30.       dv.inputTitle("提示");
  31.       activeSheet.getCell(-1, title.fieldSort - 1).validator(dv);
  32.       activeSheet.getCell(0, title.fieldSort - 1).validator(null);
  33.       break;
  34.     case 'list':
  35.       let listStr = ''
  36.       if (typeof title.fieldSelectionRange[0] == 'object') {
  37.         listStr = title.fieldSelectionRange.map((item) => item.value || item.name).join(',')
  38.       } else {
  39.         listStr = title.fieldSelectionRange.join(',')
  40.       }
  41.       var dv = new GC.Spread.Sheets.DataValidation.createFormulaListValidator(`TEXTSPLIT("${listStr}",,",")`);
  42.       dv.highlightStyle({
  43.         color: 'red',
  44.         type: GC.Spread.Sheets.DataValidation.HighlightType.dogEar,
  45.         position: GC.Spread.Sheets.DataValidation.HighlightPosition.topLeft
  46.       });
  47.       dv.showInputMessage(true);
  48.       dv.inputMessage("必须是范围内的值");
  49.       dv.inputTitle("提示");
  50.       activeSheet.getCell(-1, title.fieldSort - 1).validator(dv);
  51.       activeSheet.getCell(0, title.fieldSort - 1).validator(null);
  52.       break;
  53.     default:
  54.       break;
  55.   }
  56. }
复制代码
这是我设置校验规则的函数,第一行是标题,所以设置了第一行的校验为空,

2 个回复

倒序浏览
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-7-30 11:27:05
沙发
您好,我这边看了一下您提供的代码,本地测试了一些情况,未能在17.1.2中复现出您的问题,需要您提供一个可以复现此问题的Demo,这边调研看看是什么原因导致的。
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-8-29 14:11:20
板凳
您好,由于本帖较长时间没有回复,本帖先做结贴处理了,后续如您有其他问题,欢迎您开新帖提问。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部