找回密码
 立即注册

QQ登录

只需一步,快速开始

Lynn.Dou 讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-3-10 12:03  /   查看:5569  /  回复:3
本帖最后由 Lynn.Dou 于 2023-4-21 15:14 编辑

很多用户对如何设置SpreadJS单元格是编辑状态比较困惑。在SpreadJS示例网站上 表单保护 章节有对接口的详细说明,但是仍然有用户对表单保护机制并不是很理解。下面我们就详细说明下spreadJS的表单保护机制,如何不让单元格被编辑。

SpreadJS 虽然是一款控件但是他并不是像其他控件一样只要设置disabled 等属性就可以禁止编辑。和Excel一样需要同时设定锁定(locked)和保护(Protect)两个状态为true,才能让单元格禁止编辑。

具体我们分三种情况详细说明一下。

1. 所有单元格都不能编辑

这种情况比较简单只要设置以下代码:
  1. sheet.options.isProtected = true;  
复制代码

就可以实现效果,因为sheet默认是被锁定的,我们只需要设置保护即可。

2. Sheet中大部分单元格不可编辑只有少数行列可编辑。

这种情况就和网站示例中所展示的效果一致:绿色单元格格是可以编辑的,其余不可以编辑。

如果我们不希望单元格被编辑,只要给单元格设置一个locked 为true的style即可,如果整行都不希望被编辑,使用setStyle方法时第二个参数设置为-1,那么这一行都被locked了。

3. Sheet中大部分单元格可以编辑少数不能编辑。

和上面第二种情况相反,我们可能只希望少数几个单元格是不能编辑的,比如希望第一行作为列头是不能编辑的。这时只要设置sheet默认locked为false,然后将第一行锁定即可。
  1. var defaultStyle = new GC.Spread.Sheets.Style();
  2. defaultStyle.locked = false;
  3. sheet.setDefaultStyle(defaultStyle, GC.Spread.Sheets.SheetArea.viewport);

  4. var style = new GC.Spread.Sheets.Style();
  5. style.locked = true;
  6. style.backColor = "red";
  7. sheet.setStyle(0, -1, style);

  8. sheet.options.isProtected = true;  
复制代码
以上三种情况就是我们所能遇到的所有情况了。只要理解了表单保护的机制,设置起来是很简单的。只要记得最后一定要设置 isProtected 为true!。





评分

参与人数 2满意度 +10 收起 理由
淘子 + 5
前端小菜鸟 + 5

查看全部评分

3 个回复

正序浏览
淘子
注册会员   /  发表于:2024-5-16 15:49:11
地板
有用,蟹蟹博主
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-4-21 15:15:51
板凳
菜白 发表于 2023-4-21 13:54
activeSheet时从哪里来的

activeSheet 与 sheet 是一个意思,都是变量名。
我将代码修改了下,您刷新再看看,这样是否容易理解?
image.png258587645.png
回复 使用道具 举报
菜白
初级会员   /  发表于:2023-4-21 13:54:03
沙发
activeSheet时从哪里来的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部