找回密码
 立即注册

QQ登录

只需一步,快速开始

dybxin

中级会员

51

主题

185

帖子

658

积分

中级会员

积分
658
dybxin
中级会员   /  发表于:2024-7-18 20:11  /   查看:1519  /  回复:11
10金币
已经设置过allowInsertColumns: false 选项了,但是在列上copy之后,菜单中gc.spread.colHeaderinsertCopiedCells命令  依然不是置灰(不可点击状态)的颜色

11 个回复

正序浏览
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-7-22 09:49:12
12#
回复 使用道具 举报
eat_grape_5
高级会员   /  发表于:2024-7-19 17:37:38
11#
dybxin 发表于 2024-7-19 17:32
好的,非常感谢

不客气
回复 使用道具 举报
dybxin
中级会员   /  发表于:2024-7-19 17:32:07
10#
eat_grape_5 发表于 2024-7-19 16:10
楼主的理解对着呢,菜单选项是工作簿全局范围的信息。关于楼主的需求,需要自行开发,如果工作表数量较少 ...

好的,非常感谢
回复 使用道具 举报
eat_grape_5
高级会员   /  发表于:2024-7-19 16:10:22
9#
dybxin 发表于 2024-7-19 15:27
我理解的这个是在全局基础(也即对当前spreadjs 加载的excel上的所有sheet都生效)上设置的。 如果只是想这 ...

楼主的理解对着呢,菜单选项是工作簿全局范围的信息。关于楼主的需求,需要自行开发,如果工作表数量较少,不妨通过在不同页对全局切换设置colHeaderinsertCopiedCells命令可用或灰显状态。
回复 使用道具 举报
dybxin
中级会员   /  发表于:2024-7-19 15:27:31
8#
eat_grape_5 发表于 2024-7-19 14:28
那就找到colHeaderinsertCopiedCells菜单选项对应的对象,将其disable属性设置为true即可设置灰显禁用该 ...

我理解的这个是在全局基础(也即对当前spreadjs 加载的excel上的所有sheet都生效)上设置的。 如果只是想这某一个sheet上启用,其它sheet上都禁用呢? 目前有支持到这个粒度吗?
回复 使用道具 举报
eat_grape_5
高级会员   /  发表于:2024-7-19 14:28:15
7#
本帖最后由 eat_grape_5 于 2024-7-19 14:30 编辑
dybxin 发表于 2024-7-19 14:16
目前在用的是SpreadJS.

那就找到colHeaderinsertCopiedCells菜单选项对应的对象,将其disable属性设置为true即可设置灰显禁用该菜单选项。可以参考如下代码:
  1. //  SpreadJS右键菜单选项信息
  2. var contextMenu = spread.contextMenu.menuData;
  3. if (contextMenu) {
  4.     contextMenu.forEach(menuItem => {
  5.         if (menuItem.command === itemCommand) {
  6.             menuItem.disable = hideFlag;
  7.         }
  8.     });
  9. }
复制代码




回复 使用道具 举报
dybxin
中级会员   /  发表于:2024-7-19 14:16:39
6#
eat_grape_5 发表于 2024-7-19 13:59
了解楼主的意思了,复制了一列单元格后鼠标右键点击列头出现的菜单栏中有一项“插入复制的单元格”选项, ...

目前在用的是SpreadJS.
回复 使用道具 举报
eat_grape_5
高级会员   /  发表于:2024-7-19 13:59:05
5#
本帖最后由 eat_grape_5 于 2024-7-19 14:00 编辑
dybxin 发表于 2024-7-19 12:56
我的做法如下, 只在sheet2上允许插入列。 并且我在sheet2上copy整列后菜单上会有colHeaderinsertCopiedC ...

了解楼主的意思了,复制了一列单元格后鼠标右键点击列头出现的菜单栏中有一项“插入复制的单元格”选项,是这样吧?如下图所示:
1721368346333.png714100036.png
这个菜单选项灰显与否不受表单保护控制,表单保护控制的选项包括如下图所示,对这些选项的禁用和启用可通过设置相关属性实现,详情可参考API文档:https://demo.grapecity.com.cn/spreadjs/help/api/interfaces/GC.Spread.Sheets.IProtectionOptions
1721368392175.png218948973.png
对于colHeaderrinsertCopiedCells启用和禁用的方式,SpreadJS和在线表格编辑器的控制方式不太一样,楼主当下在使用的是SpreadJS还是在线表格编辑器?
回复 使用道具 举报
dybxin
中级会员   /  发表于:2024-7-19 12:56:02
4#
eat_grape_5 发表于 2024-7-19 08:48
默认情况下,设置了sheet.options.isProtected为false后开启表单保护,右键行头显示的菜单选项中“插入” ...

我的做法如下, 只在sheet2上允许插入列。 并且我在sheet2上copy整列后菜单上会有colHeaderinsertCopiedCells(将整个复制的列作为新的列插入)。 在sheet1上设置了不允许插入列,这个是生效的。 我的问题是 colHeaderinsertCopiedCells 如何也做这样的限制。
for (var i = 0; i < this.spread.getSheetCount(); i++) {
        this.spread.getSheet(i).options.isProtected = true;
}
sheet1.options.protectionOptions.allowInsertColumns = false
sheet2.options.protectionOptions.allowInsertColumns = true
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-7-19 12:02:58
3#
eat_grape_5 发表于 2024-7-19 08:48
楼主要使用的命令全称应该是gc.spread.contextMenu.colHeaderinsertCopiedCells,可以参考API文档了解详情 ...

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