找回密码
 立即注册

QQ登录

只需一步,快速开始

jyxu

注册会员

2

主题

5

帖子

80

积分

注册会员

积分
80
最新发帖
jyxu
注册会员   /  发表于:2020-6-24 17:00  /   查看:3620  /  回复:7
1金币
本帖最后由 jyxu 于 2020-6-24 17:49 编辑

应用插件版本:13
image.png809118041.png
问题现象:
撤销、恢复功能不生效(备注:ctrl+z、ctrl+y,可以正常撤销、恢复)
==========================
按照demo示例编写脚本如下:
==========================
var spread; var sheet; var excelIo;
    window.onload = function () {
        GC.Spread.Sheets.LicenseKey = SpreadjsHelper.key;
        spread = new GC.Spread.Sheets.Workbook(document.getElementById('divTemplate'), { sheetCount: 4 });

        var undoManager = spread.undoManager();
        excelIo = new GC.Spread.Excel.IO();
        sheet = spread.getActiveSheet();

        $("#btnQuery").click();

        //撤销
        _getElementById('btnOndo').addEventListener('click', function () {
            undoManager.undo();//不生效??
        });
        //恢复
        _getElementById('btnRedo').addEventListener('click', function () {
            undoManager.redo();//不生效??
        });

        //列操作
        spread.bind(GC.Spread.Sheets.Events.ColumnChanged, function (sender, args) {
            console.log(args);
            //不允许插入列,插入后删除
            if (args.propertyName === "addColumns") {
                spread.getActiveSheet().deleteColumns(args.col, args.count);
            }
        });

        //行操作
        spread.bind(GC.Spread.Sheets.Events.RowChanged, function (sender, args) {
            console.log(args);
            //测试:业态行不允许删除
            if (args.propertyName === "deleteRows") {
                undoManager.undo();//不生效??
                //逻辑:TODO
            }
        });
    };

image.png650291442.png

修改features_worksheet_actions_custom-action_JavaScript-测试插入行后撤销动作.zip

2.6 KB, 下载次数: 85

修改示例

最佳答案

查看完整内容

附件上传了一个撤销的例子~ 您看一下,如果还有问题在这个demo上复现一下

7 个回复

倒序浏览
最佳答案
最佳答案
Fiooona
论坛元老   /  发表于:2020-6-24 17:00:40
来自 2#
附件上传了一个撤销的例子~ 您看一下,如果还有问题在这个demo上复现一下

features_worksheet_actions_custom-action_JavaScript (1).zip

4.49 KB, 下载次数: 87

组件化表格编辑器(预览版)试用进行中,点击了解详情!
请点击评分,对我的服务做出评价!5分为非常满意!
回复 使用道具 举报
jyxu
注册会员   /  发表于:2020-6-24 17:50:03
3#
示例已修改,操作:插入行后,执行撤销功能,不生效
回复 使用道具 举报
Fiooona
论坛元老   /  发表于:2020-6-24 18:21:16
4#
代码没有走到if逻辑里面,如果您的需求是控制某行不允许删除,可以禁用右键删除菜单:
https://gcdn.grapecity.com.cn/fo ... &extra=page%3D1
组件化表格编辑器(预览版)试用进行中,点击了解详情!
请点击评分,对我的服务做出评价!5分为非常满意!
回复 使用道具 举报
jyxu
注册会员   /  发表于:2020-6-24 18:50:45
5#
image.png762923278.png 逻辑进去了,日志能打出来。添加和删除的逻辑,只写了个示例demo。现在问题是undoManager.undo();不生效
回复 使用道具 举报
Fiooona
论坛元老   /  发表于:2020-6-25 23:34:19
6#
不能这样用,因为:在第一个插入行的时候
if (args.propertyName == "addRows") {
                    undoManager.undo(); //*****************************不生效
                }
这个时候undo, 页面还没有完成第一次的插入操作,所以undoManager没有发现可以撤销的操作,所以没有生效。
第二次再插入的时候,会记录前一次的操作 ,此时会撤销前一次的操作
组件化表格编辑器(预览版)试用进行中,点击了解详情!
请点击评分,对我的服务做出评价!5分为非常满意!
回复 使用道具 举报
jyxu
注册会员   /  发表于:2020-6-27 10:38:35
7#
请问RowChanged这个事件不是行改变之后触发的吗?如果我要实现特殊行不能删除,可以怎么操作
回复 使用道具 举报
Fiooona
论坛元老   /  发表于:2020-6-27 10:45:19
8#
如果您的需求是控制某行不允许删除,可以在指定行禁用右键删除菜单:https://gcdn.grapecity.com.cn/fo ... &extra=page%3D1
组件化表格编辑器(预览版)试用进行中,点击了解详情!
请点击评分,对我的服务做出评价!5分为非常满意!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部