找回密码
 立即注册

QQ登录

只需一步,快速开始

大Vi

高级会员

148

主题

325

帖子

1029

积分

高级会员

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

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

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

15 个回复

正序浏览
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-8-31 10:12:51
16#
您好,该问题已在16.2.0中修复。
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-6-28 13:36:53
15#
您好,我们这边调研后确认之前的那个问题是一个Bug,目前正在修复中,等到有进展我会在帖子中回复您。
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-6-27 17:32:47
14#
大Vi 发表于 2023-6-27 10:09
这个就是sheet.reset()方法吧,不仅把数据源清空了,还把bindColumns绑定的列头也清空了,相当于重新绘制 ...

了解了,这边再和开发调研一下,看看上文中的问题是什么原因导致的。
回复 使用道具 举报
大Vi
高级会员   /  发表于:2023-6-27 10:09:15
13#
Joestar.Xu 发表于 2023-6-26 10:16
您好,请参考这个Demo。

我们优化了一下解决方案,在setDataSource这个接口中将第二个参数设置为true, ...

这个就是sheet.reset()方法吧,不仅把数据源清空了,还把bindColumns绑定的列头也清空了,相当于重新绘制了一遍表,确实能解决我的问题。我本意是不重新绘制表头,只是单纯的清空数据源和根据数据的行性质不同设置的样式、公式、校验等。
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-6-26 10:16:01
12#
您好,请参考这个Demo。

我们优化了一下解决方案,在setDataSource这个接口中将第二个参数设置为true,可以在设置数据源前清空掉之前的数据源,以达到您的需求。

API参考文档:https://demo.grapecity.com.cn/sp ... sheet#setdatasource

demo.rar (2.27 KB, 下载次数: 594)
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-6-19 19:36:14
11#
您好,问题已重现,这边需要调研一下,后续有进展我会在本贴中回复您。

本帖先做保留处理。
回复 使用道具 举报
大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, 下载次数: 874

回复 使用道具 举报
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 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, 下载次数: 807

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

您好,请问您的公式和数字校验具体是怎么设置的呢?可以提供一个Demo吗?
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部