• luckysheet的使用——13.开启表格非编辑模式(指定单元格可编辑,除此以外其他单元格全部不可编辑)


    对指定单元格进行设置为可编辑,在开启非编辑模式后,只有指定的单元格才可以进行编辑,其余单元格全部无法编辑。
    1.修改系统,在对应的前端页面代码中对右键菜单新增功能:

    {
         title: '设置可编辑',
         onClick: function (clickEvent, event, params) {
         window.luckysheet.setCellEditable(params.rowIndex, params.columnIndex)
       }
    },
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    2.在luckysheet源码中,找到src/global/api.js,在其中新增方法:

    /**
     * 设置单元格可编辑
     * @param r
     * @param c
     */
    export function setCellEditable(r, c) {
        //获取单元格的值
        let cellValue = {
            ct: {
                "fa": "General",
                "t": "g"
            },
            m: '',
            v: '',
            expand: 'allowEdit',
        }
        setCellValue(r, c, cellValue)
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    /**
     * 开启工作表非编辑模式(指定单元格可编辑)
     */
    export function setWorkBookEditMode() {
        luckysheetConfigsetting.editMode = true
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    3.找到src/global/validate.js,找到isEditMode()方法并进行修改:

    //是否为非编辑模式
    function isEditMode() {
        if (luckysheetConfigsetting.editMode || !Store.allowEdit) {
            return true;
        } else {
            return false;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    4.找到src/controllers/updateCell.js,找到luckysheetupdateCell()方法并进行修改:

    	//非编辑模式下禁用单元格编辑
        if (isEditMode()) {
            let result = true
            //判断该单元格是否在非编辑模式下可编辑
            let targetSheetData = Store.luckysheetfile[getSheetIndex(Store.currentSheetIndex)].data
            let cellValue = targetSheetData[row_index1][col_index1]
            if (cellValue != null) {
                let expand = cellValue.expand
                if (expand != null) {
                    if (expand == 'allowEdit') {
                        result = false
                    }
                }
            }
    
    
            if (result) {
                return;
            }
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    5.在项目对应的前端页面代码中调用方法开启非编辑模式:

    window.luckysheet.setWorkBookEditMode()
    
    • 1
  • 相关阅读:
    PriorityQueue的详解
    MATLAB使用OMP实现图像的压缩感知实例
    2609. 最长平衡子字符串
    谁有白帽子讲web安全第二版啊什么格式的都行
    【C语言】动态通讯录(超详细)
    用《斗破苍穹》的视角打开C#委托2 委托链 / 泛型委托 / GetInvocationList
    GBase8s数据库由数据库对象执行的对照
    DAMO-YOLO训练自己的数据集,使用onnxruntime推理部署
    MySQL定时删除XX天数据
    【linux外设挂载】linux系统找到U盘解决方案
  • 原文地址:https://blog.csdn.net/a519525531/article/details/134272227