找回密码
 立即注册

QQ登录

只需一步,快速开始

Clark.Pan 讲师达人认证 悬赏达人认证 SpreadJS 开发认证

超级版主

200

主题

9908

帖子

1万

积分

超级版主

Rank: 8Rank: 8

积分
15552

讲师达人悬赏达人微信认证勋章SpreadJS 认证SpreadJS 高级认证元老葡萄

Clark.Pan 讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-5-5 18:57  /   查看:2477  /  回复:0
我们在日常的模板构建中,经常会有给整列添加数据验证的操作。当我们在第一行点击右键菜单插入想在第一行上方新增一行时会发现数据验证失效了。效果就像下面这样图这样↓
image.png293392333.png
但是如果在别的行新增一行,校验是保留的。这是怎么回事呢?因为插入是插入之上插入一个空行,数据验证刚好处于边界值,系统自身无法判断上面新增的行的策略到底是带数据验证还是不带,所以默认就没有进行添加数据验证的处理。而如果在非第一行即中间的某一行做插入(因为插入默认是向上插入,所以在最后一行做插入新行也会添加在倒数第二行),新行都会插入在数据验证的范围之中,数据验证本身会根据此情况自动的去增加验证的范围,所以也就是为什么不会出错。
针对这样的问题,解决方法就是需要手动在相应的事件中进行判断,人工更好数据验证的范围。我们可以监听RowChanged事件来进行判断:
  1. sheet.bind(GC.Spread.Sheets.Events.RowChanged, function (e, info) {
  2.     if(info.propertyName == "addRows" && info.row == 0){
  3.         //判断是否是在第一行插入
  4.     }
  5. });
复制代码
在事件汇总可以通过propertyName 获取到造成RowChanged的行为,其中addRows为新增行的标识符,通过次进行判断在判断中人为通过代码更改数据验证的范围就可以解决此问题了。




0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部