找回密码
 立即注册

QQ登录

只需一步,快速开始

Winny

超级版主

141

主题

261

帖子

1682

积分

超级版主

Rank: 8Rank: 8

积分
1682
Winny
超级版主   /  发表于:2023-7-16 15:04  /   查看:1771  /  回复:0
本帖最后由 Winny 于 2023-8-3 18:24 编辑

日常业务需求中,可能会遇到需要禁止客户选中行列拖动行高列宽的操作。本文会介绍实现改需求的三种方式。

(1) 监听行高(RowHeightChanging)和列宽(ColumnWidthChanging)变化事件
  1. sheet.bind(GC.Spread.Sheets.Events.RowHeightChanging, function (e, info) {
  2. // 事件回调中取消事件执行
  3.     info.cancel = true;
  4.     sheet.repaint();
  5. });
复制代码
该方法不会影响其它业务,但是缺点也很明显,就是在拖动的过程中,还是会看到拖动的虚线,影响使用体验。

(2)结合表单保护实现
表单保护是用来实现控制单元格能否编辑的功能,通常情况下,当单元格锁定(lock)状态为true,且当前sheet处于保护状态(sheet.isProtected(true))时,可以实现单元格无法编辑。在表单保护时,有相关的参数可以控制行列不能编辑
  1. sheet.options.protectionOptions.allowResizeRows = true
  2. sheet.options.protectionOptions.allowResizeColumns = true
复制代码
如果我们在表单保护时,根据不同状态去切换是否允许用户修改行高列宽。如果不是表单保护的状态,那该方法就不再适用了。

(3)使用Resizable相关接口
设置第一行不可调整行高:
  1. // 行列索引均从0开始
  2. sheet.setRowResizable(0,false)
复制代码
设置第一列不可调整列宽:
  1. // 行列索引均从0开始
  2. sheet.setColumnResizable(0,false)
复制代码
设置前10列不允许调整列宽:
  1. sheet.getRange(-1,0,-1,10).resizable(false)
复制代码

核心API点击此处了解。

0 个回复

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