本帖最后由 Winny 于 2023-8-3 18:24 编辑
日常业务需求中,可能会遇到需要禁止客户选中行列拖动行高列宽的操作。本文会介绍实现改需求的三种方式。
(1) 监听行高(RowHeightChanging)和列宽(ColumnWidthChanging)变化事件
- sheet.bind(GC.Spread.Sheets.Events.RowHeightChanging, function (e, info) {
- // 事件回调中取消事件执行
- info.cancel = true;
- sheet.repaint();
- });
复制代码 该方法不会影响其它业务,但是缺点也很明显,就是在拖动的过程中,还是会看到拖动的虚线,影响使用体验。
(2)结合表单保护实现
表单保护是用来实现控制单元格能否编辑的功能,通常情况下,当单元格锁定(lock)状态为true,且当前sheet处于保护状态(sheet.isProtected(true))时,可以实现单元格无法编辑。在表单保护时,有相关的参数可以控制行列不能编辑
- sheet.options.protectionOptions.allowResizeRows = true
- sheet.options.protectionOptions.allowResizeColumns = true
复制代码 如果我们在表单保护时,根据不同状态去切换是否允许用户修改行高列宽。如果不是表单保护的状态,那该方法就不再适用了。
(3)使用Resizable相关接口
设置第一行不可调整行高:
- // 行列索引均从0开始
- sheet.setRowResizable(0,false)
复制代码 设置第一列不可调整列宽:
- // 行列索引均从0开始
- sheet.setColumnResizable(0,false)
复制代码 设置前10列不允许调整列宽:
- sheet.getRange(-1,0,-1,10).resizable(false)
复制代码
核心API点击此处了解。
|
|