请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

kkij

金牌服务用户

19

主题

72

帖子

211

积分

金牌服务用户

积分
211

[已处理] 菜单问题

kkij
金牌服务用户   /  发表于:2018-11-27 15:56  /   查看:6686  /  回复:14
1、如何禁用行头、列头的右键菜单;
2、如下代码只是想去掉插入行,插入删除列,但是实际效果是删除行也不可用了
//去掉插入菜单
   spread.contextMenu.menuData.forEach(function (item, index) {

       if (item &&( item.name === "gc.spread.insertRows"  || item.name === "gc.spread.deleteColumns"|| item.name === "gc.spread.insertColumns")) {
           spread.contextMenu.menuData.splice(index, 1);
           commandRemoved = true;
       }
   });
3、如何去掉默认菜单内容,完全自定义菜单项?

14 个回复

倒序浏览
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2018-11-27 16:55:08
沙发
我给您解释一下右键菜单如何设置。

下图是我把所有右键菜单打印到控制台了,您看一下:

image.png749569396.png

每一项代表一个右键菜单项,其中workArea代表了工作区域,

插入行的工作区域只有rowHeader,也就是只出现在行头区域,如图:

image.png782863464.png

而清空操作,会出现在单元格区域、列头、行头、角标中,如图:

image.png347351683.png

也就是 viewportcolHeaderrowHeadercorner

如果您想控制某个命令不出现在某个区域,只需要修改这个workArea属性就可以了。
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2018-11-27 16:57:59
板凳
另外,您对数组操作的方法也有问题。

不能在遍历一个数组的同时,对这个数组进行删除、增加项的操作,

这样会导致数组下标发生变化,从而导致您操作到错误的项。

对于这种情况,您可以新建一个数组,遍历原数组时将符合条件的元素加入到新数组中,

最后再把新数组指到menuData上即可。
回复 使用道具 举报
kkij
金牌服务用户   /  发表于:2018-11-27 16:58:49
地板
https://runjs.cn/code/s1ofry7u
按照这个示例重写菜单,出现鼠标按下的时候是我自定义菜单,鼠标右键抬起时候又变成了默认菜单
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2018-11-27 17:00:50
5#
完全自定义菜单项,实际上就是自定义这个menuData数组,

举例来说,一个典型的右键菜单项结构如下:

image.png603432006.png

其中,name是右键菜单的唯一标识符,不能重复,

command可以定义为您注册命令的名称,

text是右键菜单中显示的内容,

workArea上边讲到,是右键菜单项出现的区域。

回复 使用道具 举报
kkij
金牌服务用户   /  发表于:2018-11-27 17:45:56
6#
KevinChen 发表于 2018-11-27 17:00
完全自定义菜单项,实际上就是自定义这个menuData数组,

举例来说,一个典型的右键菜单项结构如下:


https://runjs.cn/code/s1ofry7u
按照这个示例重写菜单,出现鼠标按下的时候是我自定义菜单,鼠标右键抬起时候又变成了默认菜单

您提供的信息我消化一下,非常有用!谢谢
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2018-11-27 17:49:50
7#
不客气,RunJS上的自定义右键菜单是针对V10版本的,不推荐使用。

新版SpreadJS已经可以很方便地通过操作menuData数组进行定制右键菜单了,

我刚给您发的一些操作方法,您自己可以稍微尝试一下就明白了~
回复 使用道具 举报
kkij
金牌服务用户   /  发表于:2018-11-28 09:41:03
8#
本帖最后由 kkij 于 2018-11-28 10:49 编辑
KevinChen 发表于 2018-11-27 17:49
不客气,RunJS上的自定义右键菜单是针对V10版本的,不推荐使用。

新版SpreadJS已经可以很方便地通过操作 ...
//先清空原菜单
spread.contextMenu.menuData.forEach(function (item, index) {      
           spread.contextMenu.menuData.splice(index, 1);
           commandRemoved = true;

   });

//增加复制菜单  
   var mu1={
         text: "复制",
         name: "gc.spread.copy",
         command: "gc.spread.contextMenu.compy",
         workArea: "viewport"
   };
   spread.contextMenu.menuData.push(mu1);

按照这个方法,好像粘贴的字菜单依然存在,请指导
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2018-11-28 11:56:21
9#
您好,我这边做了一个Demo给您上传到附件了,带详细的标注,您参考一下。

CustomContextMenu.html

5.76 KB, 下载次数: 178

回复 使用道具 举报
kkij
金牌服务用户   /  发表于:2018-11-29 09:43:10
10#
KevinChen 发表于 2018-11-28 11:56
您好,我这边做了一个Demo给您上传到附件了,带详细的标注,您参考一下。

问题已解决,谢谢
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部