Derrick.Jiao 发表于 2022-7-28 16:50:41

关闭编辑器保存提示弹窗

有很多朋友在使用编辑器的时候修改了部分单元格的内容,修改之后,需要重新导入新的表单并且不需要保存。因为我们的弹窗默认是保存成ssjson,对于不懂技术的业务人员来说,保存成ssjson对他们的意义并不大,因此这部分弹窗就不再需要了。


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

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

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

                fileMenuPanelCommand.execute = function (context, propertyName, newValue) {
                  oldExecuteFn.call(this, context, propertyName, newValue);
                  context.setData("isFileModified", false);
                        
                }

最后再将其加到commandMap里面即可
var config = GC.Spread.Sheets.Designer.DefaultConfig;
                config.commandMap = {
                  fileMenuPanel: fileMenuPanelCommand
                }

下载附件即可查看demo

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

Mrluo 发表于 2022-9-8 16:30
但是我想在后续修改以后要这个保存呢

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

如果还有问题可以开个新帖继续交流。

Lynn.Dou 发表于 2022-9-8 17:41:08

:mj72:

Hyao 发表于 2022-10-10 10:05:36





这种弹窗怎么隐藏

Richard.Ma 发表于 2022-10-10 18:26:16

需要调研一下这几个弹窗对应的参数,验证后给你回复
页: [1]
查看完整版本: 关闭编辑器保存提示弹窗