找回密码
 立即注册

QQ登录

只需一步,快速开始

大Vi

高级会员

148

主题

325

帖子

1029

积分

高级会员

积分
1029
大Vi
高级会员   /  发表于:2023-6-16 11:39  /   查看:4356  /  回复:15
1金币
本帖最后由 Joestar.Xu 于 2023-6-20 10:06 编辑

第一次设置数据源setDataSource(),每行样式(背景色,合并单元格,formatter等)根据要求显示不同,等到数据变化后,数据变化了,setDataSource后怎么上一次设置的样式什么的都还在,我需要它根据新数据调整成其他样式。

所以怎么在表格加载完后,只清空setDataSource设置的数据和样式,不动表头,重新设置新的数据和样式呢?

最佳答案

查看完整内容

您好,我在您的Demo的基础上进行了修改,请查看一下是否是您想要的效果。

15 个回复

倒序浏览
最佳答案
最佳答案
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-6-16 11:39:32
来自 4#
您好,我在您的Demo的基础上进行了修改,请查看一下是否是您想要的效果。

demo.rar (1.71 KB, 下载次数: 756)
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-6-16 14:58:53
2#
您好,从您的描述来看无法判断您遇到了什么问题,能否提供一个可以复现Demo这边调查一下?
回复 使用道具 举报
大Vi
高级会员   /  发表于:2023-6-16 16:40:43
3#
Joestar.Xu 发表于 2023-6-16 14:58
您好,从您的描述来看无法判断您遇到了什么问题,能否提供一个可以复现Demo这边调查一下?

附件写了个简单的例子,初始数据如下,每行数据根据条件会展示成不同,比如第二行第一列是合并单元格,
image.png729538573.png
点击下面修改数据,每行数据不同了,条件也变化了,第二行不应该是合并单元格,但是现在还是,所以是第一次设置数据的样式没有被覆盖
image.png228888854.png
这样的问题不仅仅局限于合并单元格们还可能在其他样式,如果没有覆盖就会被影响,所以想知道有没有清空表内之前的设置,在再次设置进update方法是能以初始状态去渲染数据,不被之前的样式影响。

demo.zip

1.96 KB, 下载次数: 702

回复 使用道具 举报
大Vi
高级会员   /  发表于:2023-6-17 00:28:08
5#
Joestar.Xu 发表于 2023-6-16 11:39
您好,我在您的Demo的基础上进行了修改,请查看一下是否是您想要的效果。

如果上一次设置数据设置了公式和数字检验,把数据源置空没用哦,还是会遗留。
回复 使用道具 举报
大Vi
高级会员   /  发表于:2023-6-17 00:28:36
6#
大Vi 发表于 2023-6-17 00:28
如果上一次设置数据设置了公式和数字检验,把数据源置空没用哦,还是会遗留。

数字校验
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-6-19 10:14:47
7#
本帖最后由 Joestar.Xu 于 2023-6-27 15:00 编辑
大Vi 发表于 2023-6-17 00:28
如果上一次设置数据设置了公式和数字检验,把数据源置空没用哦,还是会遗留。

您好,请问您的公式和数字校验具体是怎么设置的呢?可以提供一个Demo吗?
回复 使用道具 举报
大Vi
高级会员   /  发表于:2023-6-19 13:02:37
8#
Joestar.Xu 发表于 2023-6-19 10:14
您好,请问您的公式好数字校验具体是怎么设置的呢?可以提供一个Demo吗?

合并单元格行price列需要设置校验,独立单元格行不需要
合并单元格行amount列需要设置公式,独立单元格行不需要
image.png722680358.png
点击下面按钮切换数据后,原来的行还是保留了之前的校验和公式,我要的是根据新数据的行属性重新设置,或者在重新加载数据前先清空所有之前的这类设置。
image.png26435545.png


demo.zip

2.31 KB, 下载次数: 808

回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-6-19 14:53:05
9#
大Vi 发表于 2023-6-19 13:02
合并单元格行price列需要设置校验,独立单元格行不需要
合并单元格行amount列需要设置公式 ...

您好,在重新加载数据前清空之前这类设置可以参考以下代码:

  1.     sheet.setDataValidator(
  2.       0,
  3.       0,
  4.       sheet.getRowCount(),
  5.       sheet.getColumnCount(),
  6.       null
  7.     );

  8.     sheet.setArrayFormula(0, 5, sheet.getRowCount(), 1, undefined);
复制代码


但是我发现即使我添加了这些代码,即在重新加载数据前清除了这些验证和公式后,您在update这个方法中还是添加上了这些验证与公式,结果看上去也没有问题,所以还是不太明白您的需求。
回复 使用道具 举报
大Vi
高级会员   /  发表于:2023-6-19 15:55:30
10#
本帖最后由 大Vi 于 2023-6-19 15:58 编辑
Joestar.Xu 发表于 2023-6-19 14:53
您好,在重新加载数据前清空之前这类设置可以参考以下代码:

很奇怪,放在sheet.setDataSource(data)后面就可以完全清除=

image.png316051635.png image.png321761779.png
但是放在sheet.setDataSource([])前面,单单还有一个校验没清除
image.png958729858.png image.png283240966.png

demo.zip

2.42 KB, 下载次数: 876

回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部