请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

BBOY

注册会员

5

主题

13

帖子

66

积分

注册会员

积分
66
最新发帖
BBOY
注册会员   /  发表于:2025-4-23 17:45  /   查看:81  /  回复:3
10金币
在模版中设置了数据校验,当活动价的sheet页的结束时间小于开始时间的时候会圈红
image.png510921630.png
效果如下:
image.png276775511.png
但是当我切换到活动价sheet页,执行下面的代码之后,校验失效,注释代码之后校验恢复正常
sheet0.addRows(2, newData.length);
sheet0.setDataSource(dataSource);


test-demo.zip

121.12 KB, 下载次数: 2

最佳答案

查看完整内容

您好!运行您提供的demo复现了问题现象,走读代码发现以下对“活动价”sheet从行2处插入行后对Table绑定数据,如下图所示: 导致原Table中对“开始日期”和“结束日期”列设置的日期验证器引用单元格失效,如下图所示: 因此,数据验证器无法按照预期验证“开始日期”列数据是否小于“结束日期”列数据,同样也无法判断“结束日期”列是否大于“开始日期”列数据。 理解您之所以对“活动价”sheet插入行是为了能够容 ...

3 个回复

倒序浏览
最佳答案
最佳答案
Wilson.Zhang
超级版主   /  发表于:2025-4-23 17:45:34
来自 2#
您好!运行您提供的demo复现了问题现象,走读代码发现以下对“活动价”sheet从行2处插入行后对Table绑定数据,如下图所示:
1745457827514.png173902281.png

导致原Table中对“开始日期”和“结束日期”列设置的日期验证器引用单元格失效,如下图所示:
1745457920974.png908184509.png

因此,数据验证器无法按照预期验证“开始日期”列数据是否小于“结束日期”列数据,同样也无法判断“结束日期”列是否大于“开始日期”列数据。

理解您之所以对“活动价”sheet插入行是为了能够容纳下对Table绑定的数据源。然而,在对Table绑定数据后但未对sheet绑定数据源时,可以看到Table的数据区域首行正是sheet中行号为3(行索引为2)的行。那么,从该行开始插入新行后,原来的数据验证规则中的单元格引用便失效了。您可以在绑定数据源之前,判断如果当前sheet的总行数小于等于数据源长度,那就对sheet扩充行数。以您的“活动价”sheet为例,从行号3开始为Table数据区域,其上有两行,那么可以扩充行数为数据源长度+2,如下图所示代码:
1745458784579.png814828185.png

这样不损坏数据验证器中的单元格引用,上图代码运行后可保留“活动价”sheet中的数据验证器单元格引用,如下图所示:
1745458865026.png619746703.png

具体情况具体对待,基本原则如上所述。
回复 使用道具 举报
BBOY
注册会员   /  发表于:2025-4-24 09:51:08
3#
问题解决,非常感谢!
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2025-4-24 14:16:45
4#
BBOY 发表于 2025-4-24 09:51
问题解决,非常感谢!

不客气。问题既已得到解决,那就结帖了。如遇新问题,欢迎发新帖沟通。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部