找回密码
 立即注册

QQ登录

只需一步,快速开始

大Vi

高级会员

160

主题

356

帖子

1126

积分

高级会员

积分
1126
大Vi
高级会员   /  发表于:2024-2-23 10:36  /   查看:2202  /  回复:9
本帖最后由 Richard.Huang 于 2024-2-28 12:06 编辑

产品:SpreadJS
版本:V14.0.2
调研编号:SJS-22944

第一次请求数据setDataSource后,第4行是父层级,所以有展开收取图标,这个没毛病
image.png89367980.png
但是第二次请求数据setDataSource后,第4行是子层级,这里还是会有上次数据的展开收起图标
image.png34109496.png
也就是上一次设置的这个图标会影响下一次新数据展示的效果,请问这个怎么在每次数据更新时重新设置图标呢?或者如何手动清除某一行这个图标呢?

9 个回复

倒序浏览
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-2-23 13:40:59
沙发
您好,是否可以上传下您的分组相关代码以及setDataSource相关代码。
回复 使用道具 举报
大Vi
高级会员   /  发表于:2024-2-23 15:19:07
板凳
Ellia.Duan 发表于 2024-2-23 13:40
您好,是否可以上传下您的分组相关代码以及setDataSource相关代码。

请看demo第四行

demo.zip

2.77 KB, 阅读权限: 150, 下载次数: 0

回复 使用道具 举报
大Vi
高级会员   /  发表于:2024-2-23 15:23:10
地板
...

demo.zip

1.85 KB, 下载次数: 420

回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-2-23 18:06:28
5#
您好,您描述的情况我了解了,这边调研一下,后续有进展我会在本贴中回复您。
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-2-26 17:20:51
6#
您好,这边修改了一下您的Demo,请参考附件。

demo.zip

1.95 KB, 下载次数: 437

回复 使用道具 举报
大Vi
高级会员   /  发表于:2024-2-27 14:26:36
7#
本帖最后由 大Vi 于 2024-2-27 14:30 编辑
Joestar.Xu 发表于 2024-2-26 17:20
您好,这边修改了一下您的Demo,请参考附件。

sheet.setDataSource(data, true) 内置是用的reset方法,然后又重新bindColumns相当于重新绘制表。我知道这样可以实现,但我并不想每次更新数据都重新绘制表头,因为这个是固定不变的。

我自己瞎搞想出了一个办法,就是在我原有代码中加两行,貌似解决了我的问题,但我并不清楚原因,需要你帮我看看,这个写法是不是有什么隐患,目前在我测试看来好像没发现什么问题。
  1. document.getElementById("setData").onclick = function () {
  2.     let sheet = spread.getSheet(0),
  3.       sheetData = getProducts2();

  4.     //////////////////////////// 解决方法
  5.     sheet.setDataSource([]);   
  6.     sheet.addRows(0, 200)
  7.     /////////////////////////////

  8.     sheet.setDataSource(sheetData);
  9.     toInitOutlineColumn(sheet, sheetData);
  10.   };
复制代码

demo.zip

1.89 KB, 下载次数: 398

回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-2-27 14:55:30
8#
  1. document.getElementById("setData").onclick = function () {
  2.   let sheet = spread.getSheet(0),
  3.     sheetData = getProducts2();

  4.   sheet.getRange(0, 0, sheet.getRowCount(), sheet.getColumnCount()).textIndent(null);
  5.   sheet.outlineColumn.refresh();

  6.   sheet.setDataSource(sheetData);
  7.   toInitOutlineColumn(sheet, sheetData);
  8. };
复制代码


请参考以上代码来实现,不建议您使用addRows的方法来实现,您可以简单测试一下将addRows的第二个参数改为1后再看看结果,你会发现之前的问题又出现了。
回复 使用道具 举报
大Vi
高级会员   /  发表于:2024-2-27 15:36:00
9#
Joestar.Xu 发表于 2024-2-27 14:55
请参考以上代码来实现,不建议您使用addRows的方法来实现,您可以简单测试一下将addRows的第二个参数改 ...

确实。。。addRows有问题,你这个看起来就靠谱!
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-2-27 15:54:33
10#
好的,那就先结贴了,后续有其他问题的话随时开新帖提问哈。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部