Winny 发表于 2023-7-16 15:04:38

禁止调整行高列宽

本帖最后由 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点击此处了解。
页: [1]
查看完整版本: 禁止调整行高列宽