Clark.Pan 发表于 2020-5-5 18:57:01

头行插入导致范围设置数据验证不生效的解决办法

我们在日常的模板构建中,经常会有给整列添加数据验证的操作。当我们在第一行点击右键菜单插入想在第一行上方新增一行时会发现数据验证失效了。效果就像下面这样图这样↓

但是如果在别的行新增一行,校验是保留的。这是怎么回事呢?因为插入是插入之上插入一个空行,数据验证刚好处于边界值,系统自身无法判断上面新增的行的策略到底是带数据验证还是不带,所以默认就没有进行添加数据验证的处理。而如果在非第一行即中间的某一行做插入(因为插入默认是向上插入,所以在最后一行做插入新行也会添加在倒数第二行),新行都会插入在数据验证的范围之中,数据验证本身会根据此情况自动的去增加验证的范围,所以也就是为什么不会出错。
针对这样的问题,解决方法就是需要手动在相应的事件中进行判断,人工更好数据验证的范围。我们可以监听RowChanged事件来进行判断:
sheet.bind(GC.Spread.Sheets.Events.RowChanged, function (e, info) {
    if(info.propertyName == "addRows" && info.row == 0){
      //判断是否是在第一行插入
    }
});在事件汇总可以通过propertyName 获取到造成RowChanged的行为,其中addRows为新增行的标识符,通过次进行判断在判断中人为通过代码更改数据验证的范围就可以解决此问题了。




页: [1]
查看完整版本: 头行插入导致范围设置数据验证不生效的解决办法