背景:
在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[0];
- //以按键 "A" 为例
- if (e && e.keyCode == 65) {
- var gcuielement = document.activeElement.attributes.gcuielement;
- if(gcuielement && gcuielement.localName == "gcuielement" ) {
- //判断当前选择的单元格是否是锁定状态
- var selection = sheet.getSelections()[0];
- var r = selection.row;
- var c = selection.col;
- var cell = sheet.getCell(r,c);
- if(sheet.options.isProtected == true && cell.locked() == true) {
- alert("单元格锁定,禁止输入");
- }
- }
- }
- }
复制代码
测试结果如下:
完整代码详见附件。
|
|