找回密码
 立即注册

QQ登录

只需一步,快速开始

Derrick.Jiao 讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2022-7-28 16:50  /   查看:3165  /  回复:7
有很多朋友在使用编辑器的时候修改了部分单元格的内容,修改之后,需要重新导入新的表单并且不需要保存。因为我们的弹窗默认是保存成ssjson,对于不懂技术的业务人员来说,保存成ssjson对他们的意义并不大,因此这部分弹窗就不再需要了。
image.png780990295.png

在设计器中,有这样一个状态叫做isFileModified,也就是说,当我们表单的内容发生变化后,无论是否撤销。这个状态都会置为true,上述这个弹窗也主要是根据这个状态来控制是否弹出。因此,想要关闭上述弹窗,就可以通过将这个isFileModified的状态置为false即可。

在哪里做这个操作呢?我们需要重写GC.Spread.Sheets.Designer.CommandNames.FileMenuPanel这个命令,这个命令可以说是掌管“文件”这个大的template的“总管”。像是想要在“文件”模板里面加一些按钮逻辑,都是要通过重写FileMenuPanel命令的execute实现。

我们通过下面的代码重写这个命令即可,核心就是通过setData来改变这个状态。
  1. var fileMenuPanelCommand = GC.Spread.Sheets.Designer.getCommand(GC.Spread.Sheets.Designer.CommandNames.FileMenuPanel);
  2.                 var oldExecuteFn = fileMenuPanelCommand.execute;

  3.                 fileMenuPanelCommand.execute = function (context, propertyName, newValue) {
  4.                     oldExecuteFn.call(this, context, propertyName, newValue);
  5.                     context.setData("isFileModified", false);
  6.                         
  7.                 }
复制代码


最后再将其加到commandMap里面即可
  1. var config = GC.Spread.Sheets.Designer.DefaultConfig;
  2.                 config.commandMap = {
  3.                     fileMenuPanel: fileMenuPanelCommand
  4.                 }
复制代码


下载附件即可查看demo
关闭保存json弹窗.html (2.72 KB, 下载次数: 286)

7 个回复

倒序浏览
Mrluo
初级会员   /  发表于:2022-9-8 16:10:12
沙发
isFileModified 我导入文件以后不管是否编辑,这个这个状态都是true,如果是新建的就不会这样
回复 使用道具 举报
有点东西悬赏达人认证
初级会员   /  发表于:2022-9-8 16:19:51
板凳
Mrluo 发表于 2022-9-8 16:10
isFileModified 我导入文件以后不管是否编辑,这个这个状态都是true,如果是新建的就不会这样

是的,因为导入表单之后是相对于导入前做了改变,因此是true。上面的示例直接在执行命令前将其拦截改成false了。
回复 使用道具 举报
Mrluo
初级会员   /  发表于:2022-9-8 16:30:06
地板
有点东西 发表于 2022-9-8 16:19
是的,因为导入表单之后是相对于导入前做了改变,因此是true。上面的示例直接在执行命令前将其拦截改成fa ...

但是我想在后续修改以后要这个保存呢
回复 使用道具 举报
有点东西悬赏达人认证
初级会员   /  发表于:2022-9-8 16:51:02
5#
Mrluo 发表于 2022-9-8 16:30
但是我想在后续修改以后要这个保存呢

那就不要重写上面的命令了,在你不想开启的时候调用一手d.setData("isFileModified", false);关了这一次就行。再次导入的时候又可以开启保存了。

如果还有问题可以开个新帖继续交流。
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-9-8 17:41:08
6#
回复 使用道具 举报
Hyao
注册会员   /  发表于:2022-10-10 10:05:36
7#
image.png417716369.png
image.png295688475.png


这种弹窗怎么隐藏

image.png361914061.png
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-10-10 18:26:16
8#
需要调研一下这几个弹窗对应的参数,验证后给你回复
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部