找回密码
 立即注册

QQ登录

只需一步,快速开始

Derrick.Jiao 讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-8-2 12:05  /   查看:3151  /  回复:0
本帖最后由 Derrick.Jiao 于 2021-12-29 12:06 编辑

v14的组件版编辑器已经发布有一段时间了,相信大家无论是通过公开课,或者我们的技术文章,都已经了解组件版编辑器的一些自定义的内容。有些小伙伴对于文件栏大点击事件想要实现自己的一些逻辑,那么我们可以重新定义这个命令来实现自己的一些逻辑。本次主要讲解,如何跟根据表单的保护状态实现禁用导入导出。

首先,我们把默认的配置文件打印出来看下,文件按钮对应的就是"fileMenuButton"这个命令。
image.png73597105.png


接着,我们使用
GC.Spread.Sheets.Designer.getCommand("fileMenuButton");
获取这个命令,我们需要修改里面对应的excute方法
image.png241608275.png

重写代码如下:我们在excute里面加一个判断,判断是否为表单保护。如果不是表单保护,则执行原有的逻辑,如果是表单保护,则执行else的逻辑。
  1. let old = GC.Spread.Sheets.Designer.getCommand("fileMenuButton");
  2.             let oldExecuteMergeCenter = old.execute;
  3.             old.execute = function (context, propertyName) {
  4.                 console.log(sheet)
  5.                 if(sheet.options.isProtected === false){
  6.                     oldExecuteMergeCenter.call(this, context, propertyName);
  7.                 }else{
  8.                     alert('The file button has been banned!');
  9.                 }
  10.                
  11.             };
复制代码

最后,往comandMap里面写入我们自定义的命令,通过setConfig给设计器添加上这个配置。
  1. var config = GC.Spread.Sheets.Designer.DefaultConfig;
  2. config.commandMap["fileMenuButton"] = old;
  3. d.setConfig(config);
复制代码
添加完成后,若当前表单是保护的,则弹出alert框,不执行导入导出的逻辑。 image.png757243346.png

下载附件即可查看完整demo。

purejs 2.zip

2.16 MB, 下载次数: 100

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部