Lynn.Dou 发表于 2021-6-8 10:13:05

锁定状态下,单元格输入弹窗提示

背景:
在Excel中,当设置了表单保护,且单元格处于锁定状态时,此时在单元格进行输入,会提示如下:

SpreadJS是一个控件产品,原生上没有此功能,但我们可以利用SpreadJS强大的定制能力二次开发实现。

步骤:
单元格输入有两种方式:
方式1:双击单元格进入编辑状态
方式2:选择单元格并按下字母键/数字键进行输入。
思路较简单,监听双击事件或者键盘按键,判断当前表单为保护状态,且该单元格为锁定状态,此时进行弹窗提示。

具体如下:

方式1:监听双击单元格
sheet.bind(GC.Spread.Sheets.Events.CellDoubleClick, function (e, info) {
                console.log(info);
                var r = info.row;
                var c = info.col;
                var cell = sheet.getCell(r,c);
                if(sheet.options.isProtected == true && cell.locked() == true) {
                  alert("单元格锁定,禁止输入")
                }
            });

方式2:监听键盘按键

//js监听键盘按键
            document.onkeydown = function (event) {
                var e = event || window.event || arguments.callee.caller.arguments;
                //以按键 "A" 为例
                if (e && e.keyCode == 65) {
                  var gcuielement = document.activeElement.attributes.gcuielement;
                  if(gcuielement && gcuielement.localName == "gcuielement" ) {
                        //判断当前选择的单元格是否是锁定状态
                        var selection = sheet.getSelections();
                        var r = selection.row;
                        var c = selection.col;
                        var cell = sheet.getCell(r,c);
                        if(sheet.options.isProtected == true && cell.locked() == true) {
                            alert("单元格锁定,禁止输入");
                        }
                  }
                }
            }
测试结果如下:


完整代码详见附件。


页: [1]
查看完整版本: 锁定状态下,单元格输入弹窗提示