找回密码
 立即注册

QQ登录

只需一步,快速开始

Dtttax

银牌会员

265

主题

663

帖子

2116

积分

银牌会员

积分
2116
Dtttax
银牌会员   /  发表于:2024-4-15 17:43  /   查看:6206  /  回复:12
1金币
本帖最后由 Richard.Huang 于 2024-4-22 14:51 编辑

产品:SpreadJS
版本:V14.2.3
调研编号:SJS-23872

insertrow如果像右键insertrow。
直接用这个方法可以,如果有公式也可以直接还原。
  1. spread.commandManager().execute({
  2.   ...options,
  3.   cmd: 'gc.spread.contextMenu.insertRows'
  4. })
复制代码
但是如果需要加入其他功能比如写个方法
  1. insertrow(){
  2. spread.commandManager().execute({
  3.   ...options,
  4.   cmd: 'gc.spread.contextMenu.insertRows'
  5. })
  6. let cell = sheet.getCell(activeRow + i, 0)
  7. let t = cell.tag()
  8. if (!t) {
  9.   t = {}
  10. }
  11. t.manualInsert = true
  12. }
复制代码

或者写相同的代码
  1. insertrow(){
  2. sheet.addRows(activeRow, rowCount)
  3. let cell = sheet.getCell(activeRow + i, 0)
  4. let t = cell.tag()
  5. if (!t) {
  6.   t = {}
  7. }
  8. t.manualInsert = true
  9. }
复制代码
这样如果插入一行后到其他表单设置公式,撤回能撤回那个插入的行,但是公式不能跟着变化。

12 个回复

正序浏览
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-5-17 17:09:32
13#
您好,由于本帖较长时间没有回复,本帖先做结贴处理了,后续如您有其他问题,欢迎您开新帖提问。
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-5-10 09:12:02
12#
了解了,就旧版本而言,暂时没有更好的解决方案了。
回复 使用道具 举报
Dtttax
银牌会员   /  发表于:2024-5-9 18:02:00
11#
Joestar.Xu 发表于 2024-5-9 17:37
您好,请问您的问题是否已经解决,如果仍未解决,欢迎继续回帖,我们来协助调研。

现在是升级最新版本有很多风险,我们没办法升级
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-5-9 17:37:48
10#
您好,请问您的问题是否已经解决,如果仍未解决,欢迎继续回帖,我们来协助调研。
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-4-28 11:06:28
9#
Dtttax 发表于 2024-4-28 10:06
升级到最新版是升级到哪个版本V17吗?

是的。目前最新版本为17.0.8。
回复 使用道具 举报
Dtttax
银牌会员   /  发表于:2024-4-28 10:06:04
8#
升级到最新版是升级到哪个版本V17吗?
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-4-18 12:02:15
6#
好的,您描述的情况我了解了,这边调研一下,后续有进展我会在本贴中回复您。
回复 使用道具 举报
Dtttax
银牌会员   /  发表于:2024-4-17 17:38:00
5#
对的,就是这样
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-4-17 17:32:39
4#
了解了,我这边做了一个简单的Demo,在这个Demo中我将addRows作为一个可以undo的command封装了起来,然后按照您说的在Sheet1中设置了='Sheet2'!B13公式后,在Sheet2中使用自定义的command增加了一行,此时Sheet1中设置的公式变为:='Sheet2'!B14。

然后,撤销增加一行的command,会发现Sheet1中的公式仍然是:='Sheet2'!B14。

但是实际上在使用gc.spread.contextMenu.insertRows这个command时,即使撤销了以后,Sheet1中的公式也会变回:='Sheet2'!B13。

综上,您实际的需求是想要让这个自定义command也能实现和gc.spread.contextMenu.insertRows一样的撤回效果,即让公式也恢复到没有添加行之前的效果。

不知道我的理解对吗?如果仍有疑问或异议请您再详细说明一下。
回复 使用道具 举报
Dtttax
银牌会员   /  发表于:2024-4-16 18:13:46
3#
比如sheet1单元格有个公式,='Sheet2'!B13, 在Sheet2的13行上面用sheet.addRows(activeRow, rowCount) 插入一行,这个是那个公式就会变成了'Sheet2'!B14,如果马上撤回,这个时候公式不能跟着撤回。

也就是不用spread.commandManager().execute({
  cmd: 'gc.spread.contextMenu.insertRows'
}) 插入行。用sheet.addRows 插入行。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部