找回密码
 立即注册

QQ登录

只需一步,快速开始

石大正信
初级会员   /  发表于:2023-9-8 15:46  /   查看:2419  /  回复:12
本帖最后由 Richard.Huang 于 2023-10-19 11:26 编辑

产品:SpreadJS
版本:V14.2

数据分组后,插入一条新数据 刷新展示异常
分组节点展开插入正常,收缩插入后分组刷新异常,
插入新记录后,进行数据刷新,刷新代码:

sheet.setDataSource(data);
spread.suspendPaint();
if (data) {
    data.forEach((item, index) => {
        sheet.getCell(index, _options.columnIndex || 0).textIndent(item.f_level);
        callback && callback(item, index)
    })
}

sheet.outlineColumn.options({
    columnIndex: 0,
    showImage: true,
    showIndicator: true,
    expandIndicator: require('static/images/tree-plus2.gif').default,
    collapseIndicator: require('static/images/tree-minus2.gif').default,
    ..._options
});
sheet.showRowOutline(_options.showRowOutline || false);
sheet.outlineColumn.refresh();
spread.resumePaint();


节点展开插入正常
Sep-08-2023 15-34-14.gif680473632.png


节点收缩后 展示错误
2.gif854104308.png


12 个回复

倒序浏览
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-9-8 17:32:13
沙发
我这边尝试根据您提供的代码复现问题,但是缺少一些关键代码的定义,能否请您提供一个完整的且可以复现该问题的Demo呢?
回复 使用道具 举报
石大正信
初级会员   /  发表于:2023-9-8 18:38:22
板凳
Joestar.Xu 发表于 2023-9-8 17:32
我这边尝试根据您提供的代码复现问题,但是缺少一些关键代码的定义,能否请您提供一个完整的且可以复现该问 ...





请选择 行号 为 1.1  上点击右键插入(可正常插入)。

在收缩所有1.1 后在中间行插入 即可出现异常效果

Demo.html.zip

3.16 KB, 下载次数: 314

回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-9-11 10:42:26
地板
本帖最后由 Joestar.Xu 于 2023-9-13 15:45 编辑

我这边已经复现出您的问题,为了确保能顺利解决您的问题,能否告知一下您在第二种情况下想要实现的效果吗?[SJS-20105]
回复 使用道具 举报
石大正信
初级会员   /  发表于:2023-9-11 14:58:41
5#
image.png613492736.png


如图,在收缩状态下,插入1.2后 我想要展示的效果
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-9-11 17:30:21
6#
收到,这边跟开发反馈调研一下,后续有进展我会在本帖中回复。

本帖先做保留处理了。
回复 使用道具 举报
石大正信
初级会员   /  发表于:2023-9-12 11:57:35
7#
Joestar.Xu 发表于 2023-9-11 17:30
收到,这边跟开发反馈调研一下,后续有进展我会在本帖中回复。

本帖先做保留处理了。

好的,刚才看咱们官网DEMO的甘特图也有相似问题...   https://demo.grapecity.com.cn/sp ... eet/overview/purejs
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-9-12 17:30:41
8#
收到,这边跟开发反馈一下。
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-9-13 15:41:12
9#
您好,根据调研,这是因为大纲列并不适合用于真正的层级数据管理,对于您的这个用例,建议您使用以下代码来实现:

function loadData(spread, sheet) {
      sheet.rowOutlines.ungroup();
      sheet.outlineColumn.reset();
      sheet.setDataSource(data.concat([]));
      sheet.setDataSource(data);

      initTree(spread, { columnName: "hh" }, data, (record, idx) => { });
}

不过以上代码不会保留原来的合并状态。
回复 使用道具 举报
石大正信
初级会员   /  发表于:2023-9-13 22:25:59
10#
Joestar.Xu 发表于 2023-9-13 15:41
您好,根据调研,这是因为大纲列并不适合用于真正的层级数据管理,对于您的这个用例,建议您使用以下代码来 ...

我们当时选型时也知道咱们组件并不真正适合层级数据管理,但其他功能强大。
目前我们业务有大量层级树数据编制及展示场景。
对于您说的建议我们也通过插入前展开所有层级 实现了,但用户体验较差。所以这个问题一直困扰我们~
还有其他插入后不影响折叠的方案吗?
如果我们要自己实现 去记录展开收缩节点 重新刷新是否是一个靠谱方案?
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部