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

QQ登录

只需一步,快速开始

xiaolong

金牌服务用户

97

主题

378

帖子

1033

积分

金牌服务用户

积分
1033

[已处理] 表单保护问题

xiaolong
金牌服务用户   /  发表于:2018-12-5 11:50  /   查看:3649  /  回复:9
给excel设置禁用,右键的时候行和列的隐藏显示功能也没了,应该怎么设置出来

9 个回复

倒序浏览
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2018-12-5 14:49:47
沙发
您好,表单保护时SpreadJS默认禁用了行和列的隐藏与显示功能。

如果您需要在保护表单时实现隐藏与现实行列,可以通过自定义右键功能的方式来实现,

我这边给您一个博客链接,博客结合Demo描述了如何自定义右键菜单。


https://xamk.grapecity.com.cn/bl ... ht-click-menu-part1
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2018-12-5 15:41:15
板凳
抱歉,博客目前仍在审核,您应该访问不了。

我上传一个Demo,您参考一下,Demo中都有注释。

深入解析如何自定义Spread JS右键菜单(上).zip

26.67 KB, 下载次数: 179

回复 使用道具 举报
xiaolong
金牌服务用户   /  发表于:2018-12-10 16:34:54
地板
KevinChen 发表于 2018-12-5 15:41
抱歉,博客目前仍在审核,您应该访问不了。

我上传一个Demo,您参考一下,Demo中都有注释。

我在demo里设置表单保护之后,右键的功能也被禁用了。。感觉不能实现啊。。
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2018-12-10 17:01:55
5#
xiaolong 发表于 2018-12-10 16:34
我在demo里设置表单保护之后,右键的功能也被禁用了。。感觉不能实现啊。。

您好,当表格受保护时,右键菜单确实会隐藏一些项,

但是右键菜单显示内容是完全可以自定义的,只要通过重写ContextMenu即可实现。

示例代码:

  1. function ContextMenu(){}
  2.         ContextMenu.prototype = new GC.Spread.Sheets.ContextMenu.ContextMenu(spread);
  3.         // 通过自定义ContextMenu的onOpenMenu来过滤显示的菜单项
  4.         ContextMenu.prototype.onOpenMenu = function (menuData, itemsDataForShown, hitInfo, spread) {
  5.             console.log(menuData);
  6.             console.log(itemsDataForShown);
  7.             console.log(hitInfo);
  8.             console.log(spread);
  9.             /*
  10.             * 您可以通过更改 itemsDataForShown 数组的元素来更改过滤结果
  11.             * 如果您仅仅想变更过滤的内容,return false或者不加return
  12.             * 您可以通过return true来打开您自定义的context menu
  13.             * */
  14.             //return true;
  15.         };
  16.         var myContextMenu = new ContextMenu();
  17.         spread.contextMenu = myContextMenu;
复制代码


参考API:

http://help.grapecity.com/spread ... enu~onOpenMenu.html

另外,可运行的Demo我上传到附件了,您可以下载下来参考一下。

CustomContextMenu.html

6.62 KB, 下载次数: 141

回复 使用道具 举报
xiaolong
金牌服务用户   /  发表于:2018-12-10 19:55:26
6#
KevinChen 发表于 2018-12-10 17:01
您好,当表格受保护时,右键菜单确实会隐藏一些项,

但是右键菜单显示内容是完全可以自定义的,只要通 ...

你好,我在demo的基础上添加了表单保护,然后把插入行修改成了隐藏行,但还是不能点。附件在下面,您帮忙看下
回复 使用道具 举报
xiaolong
金牌服务用户   /  发表于:2018-12-10 19:59:15
7#
附件

Demo:深入解析如何自定义Spread JS右键菜单(上).zip

28.55 KB, 下载次数: 149

回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2018-12-11 10:26:20
8#
您要显示行头的“隐藏”和“显示”项,

只需要在itemsDataForShown中将对应的hideRows和unhideRows两个项的disable设置为false即可,

代码示例如下:

  1. ContextMenu.prototype.onOpenMenu = function(menuData, itemsDataForShown, hitInfo, spread) {
  2.                                         console.log(menuData);
  3.                                         console.log(itemsDataForShown);
  4.                                         console.log(hitInfo);
  5.                                         console.log(spread);
  6.                                        
  7.                                         itemsDataForShown.forEach(function (item) {
  8.                                                 if(item &&
  9.                                                         (item.name === "gc.spread.hideRows" || item.name === "gc.spread.unhideRows")){
  10.                                                     item.disable = false;
  11.                                                 }
  12.                     });
  13.                                         /*
  14.                                          * 您可以通过更改 itemsDataForShown 数组的元素来更改过滤结果
  15.                                          * 如果您仅仅想变更过滤的内容,return false或者不加return
  16.                                          * 您可以通过return true来打开您自定义的context menu
  17.                                          * */
  18.                                         //return true;
  19.                                 };
复制代码


我把修改好的Demo上传到附件了,您下载下来运行看看。

CustomContextMenu_xiaolong.html

5.93 KB, 下载次数: 97

回复 使用道具 举报
xiaolong
金牌服务用户   /  发表于:2018-12-11 11:19:45
9#
KevinChen 发表于 2018-12-11 10:26
您要显示行头的“隐藏”和“显示”项,

只需要在itemsDataForShown中将对应的hideRows和unhideRows两个 ...

解决了,谢谢大神
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2018-12-11 12:05:37
10#
xiaolong 发表于 2018-12-11 11:19
解决了,谢谢大神

不客气,本帖我结贴了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部