找回密码
 立即注册

QQ登录

只需一步,快速开始

misshanla

初级会员

6

主题

20

帖子

200

积分

初级会员

积分
200
misshanla
初级会员   /  发表于:2018-7-30 15:39  /   查看:2616  /  回复:8
  您好,用如下代码设置单元格保护之后,为何第2行编辑不了,从第3行开始才能编辑???
          var defaultStyle = sheet.getDefaultStyle(GC.Spread.Sheets.SheetArea.viewport);
            defaultStyle.locked = false;
            sheet.setDefaultStyle(defaultStyle, GC.Spread.Sheets.SheetArea.viewport);
            var option = {
                        allowFilter: false,
                        allowSort: false,
                        allowResizeRows: true,
                        allowResizeColumns: true,
                        allowEditObjects: true,
                        allowInsertRows:true,
                        allowInsertColumns: false,
                        allowDeleteRows:true,
                        allowDragInsertRows: true
                    };               
                sheet.options.protectionOptions = option;
            sheet.options.isProtected = true;


单元格保护.png

8 个回复

倒序浏览
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2018-7-30 17:27:49
沙发
您第二行是不是有其他样式覆盖,样式中有设置单元格locked为true
因为defaultStyle是优先级最低的一种样式,如果有设置其他样式,会将其覆盖,从而结果不生效。
回复 使用道具 举报
misshanla
初级会员   /  发表于:2018-7-30 17:37:09
板凳
ClarkPan 发表于 2018-7-30 17:27
您第二行是不是有其他样式覆盖,样式中有设置单元格locked为true
因为defaultStyle是优先级最低的一种样式 ...

要怎么确定有没有别的样式,表面上看是一样的。而且更奇怪的是,一行中某些列也编辑不了
C:\Users\hanla\Desktop\一行某些列不能编辑.png
回复 使用道具 举报
misshanla
初级会员   /  发表于:2018-7-30 17:39:54
地板
ClarkPan 发表于 2018-7-30 17:27
您第二行是不是有其他样式覆盖,样式中有设置单元格locked为true
因为defaultStyle是优先级最低的一种样式 ...

要怎么确定有没有别的样式?表面上看是一样的。而且更奇怪的是,多个sheet会出现一行中某些列能编辑有些列不能编辑,多个sheet只有第一个起作用,另外两个sheet不起作用。 一行某些列不能编辑.png
C:\Users\hanla\Desktop\一行某些列不能编辑.png
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2018-7-30 17:44:20
5#
获取对应的单元格,调用locked方法获取结果,看一下是true还是false
image.png320130309.png
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2018-7-30 17:45:40
6#
misshanla 发表于 2018-7-30 17:39
要怎么确定有没有别的样式?表面上看是一样的。而且更奇怪的是,多个sheet会出现一行中某些列能编辑有些 ...

肯定的啊,您的这句代码
defaultStyle.locked = false;
sheet.setDefaultStyle(defaultStyle, GC.Spread.Sheets.SheetArea.viewport);
设置的是sheet对象,那就只有这个sheet生效啊
回复 使用道具 举报
misshanla
初级会员   /  发表于:2018-8-2 08:51:17
7#
ClarkPan 发表于 2018-7-30 17:45
肯定的啊,您的这句代码
defaultStyle.locked = false;
sheet.setDefaultStyle(defaultStyle, GC.Spre ...

这个sheet对象是传参过来的 ,有多个就会调用多次的
setProtectionOptions:function(sheet){
                // 设置单元格保护开始
            var defaultStyle = new GC.Spread.Sheets.Style();
            defaultStyle.locked = false;
            sheet.setDefaultStyle(defaultStyle, GC.Spread.Sheets.SheetArea.viewport);
        .........
回复 使用道具 举报
misshanla
初级会员   /  发表于:2018-8-2 08:59:20
8#
ClarkPan 发表于 2018-7-30 17:44
获取对应的单元格,调用locked方法获取结果,看一下是true还是false

locked是true,怎么解决呢 ? 333.png

回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2018-8-2 15:49:23
9#
这个如先前电话中所说,需要您查看一下模板中的设置因为defaultStyle的优先级是style中最低的,如果有单独设置单元格锁定就会将其覆盖。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部