找回密码
 立即注册

QQ登录

只需一步,快速开始

Fiooona
论坛元老   /  发表于:2019-7-8 15:57  /   查看:5357  /  回复:0
本帖最后由 Fiooona 于 2019-7-15 15:06 编辑

      很多用户对如何设置SpreadJS单元格是编辑是否可编辑比较困惑,并在实际项目中出现设置单元格锁定时样式丢失等问题。在SpreadJS学习指南上表单保护章节有对接口的详细说明,还有与之相关的实际样式、默认样式的说明,但是仍然有用户对表单保护机制并不是很理解。下面我们就详细说明下spreadJS的表单保护机制,如何控制单元格是否可被编辑。
      SpreadJS 虽然是一款控件但是他并不是像其他控件一样只要设置disabled 等属性就可以禁止编辑。和Excel一样需要同时设定锁定(locked)和保护(Protect)两个状态为true,才能让单元格禁止编辑。
具体我们分三种情况详细说明一下。
1. 所有单元格都不能编辑
        这种情况比较简单只要设置sheet.options.isProtected = true;就可以实现效果,因为sheet表单默认是被锁定的,我们只需要设置保护即可。
2. Sheet表单中大部分单元格不可编辑只有少数行、列或单元格可编辑。
        这种情况就和网站示例中所展示的效果一致,绿色单元格格是可以编辑的。其余不可以编辑。
如果我们不希望单元格被编辑,只要给单元格设置一个locked 为true的style即可,如果整行都不希望被编辑,使用setStyle方法时第二个参数设置为-1,那么这一行都被locked了。
3. Sheet中大部分单元格可以编辑少数不能编辑。
         和上面第二种情况相反,我们可能只希望少数几个单元格是不能编辑的,比如希望第一行作为列头是不能编辑的。这时只要设置sheet默认loecked为false,然后将第一行锁定即可。
  1. <font size="4">var defaultStyle = new GC.Spread.Sheets.Style();
  2. defaultStyle.locked = false;
  3. activeSheet.setDefaultStyle(defaultStyle, GcSpread.Sheets.SheetArea.viewport);
  4. var style = new GcSpread.Sheets.Style();
  5. style.locked = true;
  6. style.backColor = "red";
  7. activeSheet.setStyle(0, -1, style);</font>
复制代码
       这种设置方法,常常会导致有样式的单元格设置了锁定后,原来的样式丢失,那是因为设置.locked属性时,是在一个新建的样式上( new GC.Spread.Sheets.Style();)设置的,这时可以先获取一处的实际样式: var style = sheet.getActualStyle(0,0); 然后再次基础上设置锁定属性: style.locked = false; 这样可以避免原有样式丢失的问题。


组件化表格编辑器(预览版)试用进行中,点击了解详情!
请点击评分,对我的服务做出评价!5分为非常满意!

0 个回复

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