找回密码
 立即注册

QQ登录

只需一步,快速开始

dybxin

中级会员

51

主题

185

帖子

658

积分

中级会员

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

最佳答案

查看完整内容

默认情况下,设置了sheet.options.isProtected为false后开启表单保护,右键行头显示的菜单选项中“插入”选项即是灰显,如下图所示: 继续设置sheet.options.protectionOptions.allowInsertColumns为true将启用插入列选项,如下图所示: 再设置sheet.options.protectionOptions.allowInsertColumns为false后,插入列选项又灰显不可用,如下图所示: 综上,支持在表单保护开启后对个别菜单选项再设置启用或禁用。楼主是 ...

11 个回复

倒序浏览
最佳答案
最佳答案
eat_grape_5
高级会员   /  发表于:2024-7-18 20:11:31
来自 2#
本帖最后由 eat_grape_5 于 2024-7-19 12:03 编辑


默认情况下,设置了sheet.options.isProtected为false后开启表单保护,右键行头显示的菜单选项中“插入”选项即是灰显,如下图所示:
1721361332325.png338892211.png
继续设置sheet.options.protectionOptions.allowInsertColumns为true将启用插入列选项,如下图所示:
1721361509469.png212815856.png
再设置sheet.options.protectionOptions.allowInsertColumns为false后,插入列选项又灰显不可用,如下图所示:
1721361667798.png944711303.png
综上,支持在表单保护开启后对个别菜单选项再设置启用或禁用。楼主是否方便提供个可复现问题的demo,这样方便定位问题原因。

评分

参与人数 1金币 +500 收起 理由
Joestar.Xu + 500 赞一个!

查看全部评分

回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-7-19 12:02:58
3#
eat_grape_5 发表于 2024-7-19 08:48
楼主要使用的命令全称应该是gc.spread.contextMenu.colHeaderinsertCopiedCells,可以参考API文档了解详情 ...

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

目前在用的是SpreadJS.
回复 使用道具 举报
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 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 16:10:22
9#
dybxin 发表于 2024-7-19 15:27
我理解的这个是在全局基础(也即对当前spreadjs 加载的excel上的所有sheet都生效)上设置的。 如果只是想这 ...

楼主的理解对着呢,菜单选项是工作簿全局范围的信息。关于楼主的需求,需要自行开发,如果工作表数量较少,不妨通过在不同页对全局切换设置colHeaderinsertCopiedCells命令可用或灰显状态。
回复 使用道具 举报
dybxin
中级会员   /  发表于:2024-7-19 17:32:07
10#
eat_grape_5 发表于 2024-7-19 16:10
楼主的理解对着呢,菜单选项是工作簿全局范围的信息。关于楼主的需求,需要自行开发,如果工作表数量较少 ...

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