找回密码
 立即注册

QQ登录

只需一步,快速开始

tim123

注册会员

12

主题

61

帖子

137

积分

注册会员

积分
137

微信认证勋章

tim123
注册会员   /  发表于:2018-11-7 12:11  /   查看:10220  /  回复:35
本帖最后由 tim123 于 2018-11-7 13:30 编辑

$("#setProtectionOptions").click(function() {
    var sheet = spread.getActiveSheet();
    sheet.options.isProtected=true;
    var option = {
        allowSelectLockedCells: false,
        allowSelectUnlockedCells: false,
        allowSort: false,
        allowFilter: false,
        allowResizeRows: false,
        allowResizeColumns: false,
        allowEditObjects: false,
        allowDragInsertRows: false,
        allowDragInsertColumns: false,
        allowInsertRows: false,
        allowInsertColumns: false,
        allowDeleteRows: false,
        allowDeleteColumns: false
    };
    sheet.options.protectionOptions = option;
});

35 个回复

倒序浏览
tim123
注册会员   /  发表于:2018-11-7 13:10:39
沙发
求助
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2018-11-7 15:55:53
板凳
锁定操作是针对sheet表单的,sheet的默认style的locked属性是true,所以当你设置了

sheet.options.isProtected=true;

该sheet下所有单元格都被保护了。

你可以用:

  1. var style = sheet.getDefaultStyle();
  2. style.locked = false;
  3. sheet.setDefaultStyle(style);
复制代码


来解锁单元格。

你可以描述一下你的应用场景,我这边可以给你一些解决问题的思路。
回复 使用道具 举报
tim123
注册会员   /  发表于:2018-11-7 16:15:54
地板
KevinChen 发表于 2018-11-7 15:55
锁定操作是针对sheet表单的,sheet的默认style的locked属性是true,所以当你设置了

sheet.options.isPro ...

在我没点击提交按钮之前所有的表都是可以编辑的状态,也可以说是所有表里面中的一些单元格可以编辑,当我点击提交按钮的后,让所有的sheet无法再进行编辑了,
回复 使用道具 举报
tim123
注册会员   /  发表于:2018-11-7 17:06:56
5#
本帖最后由 tim123 于 2018-11-7 17:12 编辑
KevinChen 发表于 2018-11-7 15:55
锁定操作是针对sheet表单的,sheet的默认style的locked属性是true,所以当你设置了

sheet.options.isPro ...

就是想点击的时候,锁定7个sheet 不是当前的sheet 我现在用getactivesheet只能获取到当前的sheet 有什么办法获取到全部的sheet吗
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2018-11-7 17:35:34
6#
提交前把需要编辑的单元格样式locked设置为false,提交后设置为true就行,这个没有什么更好的办法;

调用spread.sheets就可以获取到spread的所有sheet对象数组。
回复 使用道具 举报
tim123
注册会员   /  发表于:2018-11-7 17:56:47
7#
本帖最后由 tim123 于 2018-11-7 18:31 编辑
KevinChen 发表于 2018-11-7 17:35
提交前把需要编辑的单元格样式locked设置为false,提交后设置为true就行,这个没有什么更好的办法;

调 ...
只能在js中把一个个单元格的locked改成true吗 不能点击按钮把所有的直接都改成true吗
你好 spread 设置了这个     var spread = new GC.Spread.Sheets.Workbook(document.getElementById("ss"), {
                sheetCount: 1
            });
我用这个的话 var sheetall= spread.sheets    sheetall.options.isprotected=true
他提示错误了 isprotected of undefined

回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2018-11-8 10:03:53
8#
SpreadJS单元格锁定属性是在样式中定义的,学习指南中对样式和表单保护都有比较详尽的说明,可以仔细阅读学习一下:

样式:https://demo.grapecity.com.cn/Sp ... ample/#/demos/style

样式分为4个层次,按优先级从高到低可以分为:

单元格样式 > 行样式 > 列样式 > 表单样式

这同时也是按操作粒度来分的,如果你需要更改一个sheet中所有单元格的样式,或者某一行、某一列的样式

只需要更改对应的sheet样式或行、列样式即可。

如果要精确控制某个、某几个单元格的样式,那就必须针对这几个单元格进行操作。

表单保护:https://demo.grapecity.com.cn/Sp ... /#/demos/protection

spread.sheets返回的是个数组,当然需要在循环中进行设置,直接设置数组对象当然要报错。
回复 使用道具 举报
tim123
注册会员   /  发表于:2018-11-8 17:06:35
9#
KevinChen 发表于 2018-11-8 10:03
SpreadJS单元格锁定属性是在样式中定义的,学习指南中对样式和表单保护都有比较详尽的说明,可以仔细阅读学 ...

for(var i =0;i<11;i++){
                      var spreadNS=GC.Spread.Sheets
                        var sheet=spread.getSheet(i)
                      sheet.suspendPaint()
                    var sheetStyle=new spreadNS.Style()
                  sheetStyle.locked=true
                 sheet.addNameStyle(sheetStyle)}
这样循环的话,是可以把10个表格都锁定吗? 还是要在添加什么东西
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2018-11-8 18:08:46
10#
不是,锁定整个表格的单元格是通过更改sheet表的默认样式实现的。

  1. for(var i =0;i<11;i++){
  2.      var sheet = spread.sheets[i];
  3.      var style = sheet.getDefaultStyle();
  4.      style.locked = false;
  5.      sheet.setDefaultStyle(style);
  6. }
复制代码
回复 使用道具 举报
1234下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部