关闭编辑器保存提示弹窗
有很多朋友在使用编辑器的时候修改了部分单元格的内容,修改之后,需要重新导入新的表单并且不需要保存。因为我们的弹窗默认是保存成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
isFileModified 我导入文件以后不管是否编辑,这个这个状态都是true,如果是新建的就不会这样
Mrluo 发表于 2022-9-8 16:10
isFileModified 我导入文件以后不管是否编辑,这个这个状态都是true,如果是新建的就不会这样
是的,因为导入表单之后是相对于导入前做了改变,因此是true。上面的示例直接在执行命令前将其拦截改成false了。 有点东西 发表于 2022-9-8 16:19
是的,因为导入表单之后是相对于导入前做了改变,因此是true。上面的示例直接在执行命令前将其拦截改成fa ...
但是我想在后续修改以后要这个保存呢 Mrluo 发表于 2022-9-8 16:30
但是我想在后续修改以后要这个保存呢
那就不要重写上面的命令了,在你不想开启的时候调用一手d.setData("isFileModified", false);关了这一次就行。再次导入的时候又可以开启保存了。
如果还有问题可以开个新帖继续交流。 :mj72:
这种弹窗怎么隐藏
需要调研一下这几个弹窗对应的参数,验证后给你回复
页:
[1]