找回密码
 立即注册

QQ登录

只需一步,快速开始

dl0537

注册会员

5

主题

27

帖子

130

积分

注册会员

积分
130

微信认证勋章

最新发帖
dl0537
注册会员   /  发表于:2021-8-2 20:01  /   查看:5648  /  回复:11
20金币
本帖最后由 dl0537 于 2021-8-2 20:29 编辑

现在的需求是,想通过command的形式,实现类似键盘上的ctrl+c复制的动作需求的前提条件是,已知复制区域的对象Range(row:1,col:2,rowCount:3, colCount:4)
是否可以在执行execute的方法的时候,对指定的区域执行复制动作,而不是针对"选中"的区域进行复制粘贴
类似下记代码:
  1. // 获取ID为”ss”的div上初始化的Workbook实例
  2. var spread = GC.Spread.Sheets.findControl("ss");
  3. // 获取该实例的CommandManager实例
  4. var commandManager = spread.commandManager();
  5. // 命令调用:
  6. commandManager().execute({cmd: "copy"......}); //后边的参数不知道该如何书写
复制代码


希望有这方面经验的朋友指点一下~ 非常感谢~~




11 个回复

正序浏览
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-8-4 13:31:44
12#
dl0537 发表于 2021-8-4 12:47
谢谢~非常感谢~
我突然发现哈,在我之前提供的例子里,确实也是可以进行粘贴的。。看来目前遇到的问题, ...

不用客气,有新问题欢迎开新贴我们继续交流~
回复 使用道具 举报
dl0537
注册会员   /  发表于:2021-8-4 12:47:17
11#
Derrick.Jiao 发表于 2021-8-4 10:44
根据这个需求,我这边在这个demo中试了一下,点击之后还是可以进行粘贴的,您可以试下我上传的demo

谢谢~非常感谢~
我突然发现哈,在我之前提供的例子里,确实也是可以进行粘贴的。。看来目前遇到的问题,我分析的方向有问题,那我先结帖了。
我需要再整理整理思路,如果有需要问题我再另起新帖来咨询。
非常感谢你给我的耐心解答~
回复 使用道具 举报
dl0537
注册会员   /  发表于:2021-8-3 20:41:24
9#
Lynn.Dou 发表于 2021-8-3 12:29
这里涉及到您的业务逻辑了,在前面您的描述中,
”按照我们客户的需求,要在点击某个单元格时要设置所在行 ...

我按照你给我提供的模板,把需求以及遇到的问题,以及我这边的一些想法都记录在里边了。我们也明白,像这样的需求,咱们的产品Spreadjs在动作的处理上,其实和Excel是基本一致的,但是还是想看看能否有“曲线救国”的方式来实现
麻烦帮我们看看,万分感谢~~

demo.zip

2.9 MB, 下载次数: 541

回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-8-3 12:29:08
8#
这里涉及到您的业务逻辑了,在前面您的描述中,
”按照我们客户的需求,要在点击某个单元格时要设置所在行的背景色,这样一来,在点击动作之前所做的复制动作就会失效。所以想在点击单元格事件之后,再把之前复制过的区域再重新进行一遍复制动作“

”复制动作就会失效”这个过程您是怎么实现的,又是如何判断复制动作失效的呢?
在不了解这部分业务逻辑的基础上,这边很难给您提供合适的解答,
建议您直接提供一个demo,并结合demo详细的描述您现在遇到的问题以及期待的效果,
这边结合代码看下是否有合适的解决方案。
附件为demo模板,您可以在模板基础上添加自己的代码。

模板.zip

2.75 MB, 下载次数: 541

回复 使用道具 举报
dl0537
注册会员   /  发表于:2021-8-3 11:34:14
7#
Lynn.Dou 发表于 2021-8-3 11:12
如果只想复制不想粘贴,只能通过copy命令,但copy命令只能根据选中区域进行复制,没有参数允许根据自定义区 ...

你提供的这种方案我后来也考虑过,但是会有一个问题,就是按照需求,简单的说就是保持之前的状态,但是之前的状态按照我的认识,也就只有区域选中,或者是区域选中并复制。第一种情况可以通过selection来判断,是否进行了复制处理该如何判断?
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-8-3 11:12:46
6#
如果只想复制不想粘贴,只能通过copy命令,但copy命令只能根据选中区域进行复制,没有参数允许根据自定义区域进行复制。
这种情况下,只能建议您通过 setSelection方法选择指定区域,
然后调用copy命令, 使用 clearSelection 清除选择区域。

sheet.setSelection(1,1,2,2);
spread.commandManager().execute({cmd:"copy",sheetName:sheet.name()});
sheet.clearSelection()
回复 使用道具 举报
dl0537
注册会员   /  发表于:2021-8-3 10:35:40
5#
Lynn.Dou 发表于 2021-8-3 10:04
为什么制作复制动作,不做粘贴动作呢?粘贴行为是要在哪一过程发生呢?
能结合业务情况详细描述下您的需 ...

按照我们客户的需求,要在点击某个单元格时要设置所在行的背景色,这样一来,在点击动作之前所做的复制动作就会失效。所以想在点击单元格事件之后,再把之前复制过的区域再重新进行一遍复制动作
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-8-3 10:04:39
4#
dl0537 发表于 2021-8-3 09:37
谢谢~ 我的需求是只想进行复制动作,不做粘贴动作

为什么制作复制动作,不做粘贴动作呢?粘贴行为是要在哪一过程发生呢?
能结合业务情况详细描述下您的需求吗?
回复 使用道具 举报
dl0537
注册会员   /  发表于:2021-8-3 09:37:19
3#
Lynn.Dou 发表于 2021-8-3 09:23
您好,copy命令只能根据您当前选中的区域,将区域内容加入到剪贴板中。
copy命令使用方式即如下:
根据您 ...

谢谢~ 我的需求是只想进行复制动作,不做粘贴动作
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-8-3 09:23:37
2#
您好,copy命令只能根据您当前选中的区域,将区域内容加入到剪贴板中。
copy命令使用方式即如下:
  1. spread.commandManager().execute({cmd: "copy", sheetName: spread.getActiveSheet().name()});
复制代码
根据您的需求,您可以参考clipboardPaste命令,

API如下:
https://demo.grapecity.com.cn/sp ... tml#.clipboardPaste
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部