找回密码
 立即注册

QQ登录

只需一步,快速开始

Lynn.Dou 讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-6-8 10:13  /   查看:3194  /  回复:0
背景:
在Excel中,当设置了表单保护,且单元格处于锁定状态时,此时在单元格进行输入,会提示如下:
image.png201395568.png
SpreadJS是一个控件产品,原生上没有此功能,但我们可以利用SpreadJS强大的定制能力二次开发实现。

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

具体如下:

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


方式2:监听键盘按键

  1. //js监听键盘按键
  2.             document.onkeydown = function (event) {
  3.                 var e = event || window.event || arguments.callee.caller.arguments[0];
  4.                 //以按键 "A" 为例
  5.                 if (e && e.keyCode == 65) {
  6.                     var gcuielement = document.activeElement.attributes.gcuielement;
  7.                     if(gcuielement && gcuielement.localName == "gcuielement" ) {
  8.                         //判断当前选择的单元格是否是锁定状态
  9.                         var selection = sheet.getSelections()[0];
  10.                         var r = selection.row;
  11.                         var c = selection.col;
  12.                         var cell = sheet.getCell(r,c);
  13.                         if(sheet.options.isProtected == true && cell.locked() == true) {
  14.                             alert("单元格锁定,禁止输入");
  15.                         }
  16.                     }
  17.                 }
  18.             }
复制代码

测试结果如下:
image.png159128417.png

完整代码详见附件。


66cb857869d0d1f963cfae40670c3d3.png959424743.png

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

2.75 MB, 下载次数: 95

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部