ymslx_sjs 发表于 2022-2-9 14:17:36

哪个API可以实现插入 - 活动单元格下移(40807)

本帖最后由 Lynn.Dou 于 2022-2-14 14:21 编辑

哪个API可以实现插入 - 活动单元格下移


Lynn.Dou 发表于 2022-2-9 14:57:29

您好,
目前原生上未提供接口,不能直接使用相关功能。
您可以先参考下方文章自定义实现。
(注:该文章仅供参考,未完整考虑相关场景)
https://gcdn.grapecity.com.cn/forum.php?mod=viewthread&tid=136504

这边已将此问题记录至产品需求库中,如果后续计划添加此功能,会在本贴通知您。

ymslx_sjs 发表于 2022-2-9 16:10:39

Lynn.Dou 发表于 2022-2-9 14:57
您好,
目前原生上未提供接口,不能直接使用相关功能。
您可以先参考下方文章自定义实现。


感觉很需要这个API:lol

Lynn.Dou 发表于 2022-2-9 17:23:52

相关需求已提交,如果后续有计划实现,会在贴中及时通知您。
您可以先参考前面提供的教程,看能否满足现有需求。

ymslx_sjs 发表于 2022-2-15 10:10:13

Lynn.Dou 发表于 2022-2-9 17:23
相关需求已提交,如果后续有计划实现,会在贴中及时通知您。
您可以先参考前面提供的教程,看能否满足现有 ...

您好,根据给的例子,单元格向上移动后,如果本来下面的单元格有内容,则出现如下的现象





详细代码如下:

Lynn.Dou 发表于 2022-2-15 10:18:21

本帖最后由 Lynn.Dou 于 2022-2-15 12:13 编辑

如前面回复所说,上述示例未做完整场景测试,仅作参考作用。
如果不能满足您现有的需求,建议您先勿直接使用此demo功能,这边根据您提供的demo调研下原因。

如后续版本有计划添加此需求,会在本贴通知您。

ymslx_sjs 发表于 2022-2-15 10:24:35

本帖最后由 Lynn.Dou 于 2022-2-15 11:31 编辑

啥?研究了两天,做了一个实例,然后给这个回复的???

Lynn.Dou 发表于 2022-2-15 12:08:06

本帖最后由 Lynn.Dou 于 2022-5-24 11:12 编辑

关于此需求电话中做了大致介绍,具体测试demo发现,
如果通过 正常绘制边框、setValue赋值的方式设计表格,是可以正常“上移的”。
如附件demo所示。

您demo中数据 是经过 复制-绑定数据源-setValue赋值 等最终生成的,所以可能是哪一环节造成的了此问题。
具体原因需进一步调研,不排除是moveto方法的局限性。
本贴先做保留处理,待有进展会在贴中更新。(SJS-11880)
(更新进展:此问题已在V15.1.0修复)

ymslx_sjs 发表于 2022-2-21 11:14:57

Lynn.Dou 发表于 2022-2-15 12:08
关于此需求电话中做了大致介绍,具体测试demo发现,
如果通过 正常绘制边框、setValue赋值的方式设计表格 ...

将moveTo的API改成以下方法,暂时可以解决我的问题:
1、先将要删除的单元格清空
2、对下面的单元格进行剪切粘贴
        sheet.clear(row, 2, ranges.rowCount, 7, 3, 32 /* Axis */ | 64 /* BindingPath */ | 1 /* Data */ | 16 /* Sparkline */ | 2 /* Style */ | 4 /* Comment */);
        if (row + ranges.rowCount !== sheet.getRowCount()) {
                self.spread.commandManager().execute({
                        cmd: "clipboardPaste",
                        sheetName: sheet.name(),
                        fromSheet: sheet,
                        fromRanges: .rowCount, 2, sheet.getRowCount() - row - ranges.rowCount, 7)],
                        pastedRanges: .rowCount, 7)],
                        isCutting: true,
                        clipboardText: "",
                        pasteOption: GC.Spread.Sheets.ClipboardPasteOptions.all
                });
        }

Lynn.Dou 发表于 2022-2-21 11:30:44

:hjyzw:,感谢分享方案。
初步调研,该问题是由 value 和 bindingPath 之间的 moveTo 执行顺序引起的,正在进一步调研解决方案中。
您也可以参考以下workaround方案:
cellButtonStyle.cellButtons.command = (sheet, row, col, option) => {
                let ranges = sheet.getSpans(new GC.Spread.Sheets.Range(row,col,1,1));
                if(ranges.length){
                  if (row + ranges.rowCount == sheet.getRowCount()) {
                        sheet.clear(row, 1, ranges.rowCount, 7, 3, 32 /* Axis */ | 64 /* BindingPath */ | 1 /* Data */ | 16 /* Sparkline */ | 2 /* Style */ | 4 /* Comment */);
                  } else {
                        // 先清除覆盖范围
                        sheet.clear(row, 1, ranges.rowCount, 7, 3, 32/* Axis */ | 64/* BindingPath */ | 1/* Data */ | 16/* Sparkline */ | 2/* Style */ | 4/* Comment */);
                        // 再执行moveTo方法
                        sheet.moveTo(row + ranges.rowCount, 1, row, 1, sheet.getRowCount() - row - ranges.rowCount, 7, GC.Spread.Sheets.CopyToOptions.all);
                  }
                }
            }

页: [1] 2
查看完整版本: 哪个API可以实现插入 - 活动单元格下移(40807)