找回密码
 立即注册

QQ登录

只需一步,快速开始

鸳鸯配2024

金牌服务用户

30

主题

163

帖子

413

积分

金牌服务用户

积分
413
鸳鸯配2024
金牌服务用户   /  发表于:2024-8-14 09:52  /   查看:1400  /  回复:20
本帖最后由 鸳鸯配2024 于 2024-8-14 09:54 编辑

sheet.options.isProtected = true;


加了后,就是全局全部不可编辑,可我只想要部分不可编辑

list = [{

colCount: 0
columnEndNumber: 4
columnStartNumber: 3
rowCount: 7
rowEndNumber: 11
rowStartNumber: 3

}]



const noPreviewable = (list) =>{
    let Designer = GC.Spread.Sheets.Designer.findControl('designer-container')
    let spread = Designer.getWorkbook()
    let sheet = spread.getActiveSheet();
    sheet.options.isProtected = true;
    console.log(sheet, '--designer666--', list)

    let style = new GC.Spread.Sheets.Style();
    style.locked = false;
    list.forEach(v=>{
            v.rowCount = v.rowEndNumber - v.rowStartNumber-1
            v.colCount = v.columnEndNumber - v.columnStartNumber-1
            for (let i = 0; i <= v.colCount; i++) {
                for (let j = 0; j <= v.rowCount; j++) {
                    console.log(i, '---只想要这里面的方法不生效---', j)
                    sheet.setStyle(v.rowStartNumber + j, v.columnStartNumber + i, style, GC.Spread.Sheets.SheetArea.viewport);
                    // sheet.getCell(v.rowStartNumber + j, v.columnStartNumber + i).locked(false);
                }
            }
    })
}


  1. list = [{
复制代码




20 个回复

倒序浏览
Wilson.Zhang
超级版主   /  发表于:2024-8-14 10:07:07
沙发
您好!默认表单保护对整表生效,因为单元格的锁定状态默认为锁定,在开启表单保护前对想要编辑的单元格解开锁定状态,表单保护将不再管理这些单元格。如下图所示:
1723601133638.png981963195.png
关于如何锁定/解锁单元格,可以参考官网教程了解:https://demo.grapecity.com.cn/spreadjs/help/docs/faqs/cells/protected/cells-lock#site_main_content-doc-content_title
回复 使用道具 举报
鸳鸯配2024
金牌服务用户   /  发表于:2024-8-14 10:57:41
板凳
Wilson.Zhang 发表于 2024-8-14 10:07
您好!默认表单保护对整表生效,因为单元格的锁定状态默认为锁定,在开启表单保护前对想要编辑的单元格解开 ...


这样写还是不行,帮忙看下问题在哪

不能默认就锁定吗?

  1. let Designer = GC.Spread.Sheets.Designer.findControl('designer-container')
  2.     let spread = Designer.getWorkbook()
  3.     let sheet = spread.getActiveSheet();
  4.     let sheetStyle = sheet.getDefaultStyle();
  5.     sheetStyle.locked = false;
  6.     sheet.setDefaultStyle(sheetStyle);
  7.     sheet.options.isProtected = true;
  8.     console.log(sheet, '--designer666--', list)

  9.     let style = new GC.Spread.Sheets.Style();
  10.     style.locked = false;
  11.     list.forEach(v=>{
  12.             v.rowCount = v.rowEndNumber - v.rowStartNumber-1
  13.             v.colCount = v.columnEndNumber - v.columnStartNumber-1
  14.             for (let i = 0; i <= v.colCount; i++) {
  15.                 for (let j = 0; j <= v.rowCount; j++) {
  16.                     console.log(i, '---行----0000----列---', j)
  17.                     sheet.setStyle(v.rowStartNumber + j, v.columnStartNumber + i, style, GC.Spread.Sheets.SheetArea.viewport);

  18.                 }
  19.             }
  20.         }
  21.     })
复制代码


回复 使用道具 举报
鸳鸯配2024
金牌服务用户   /  发表于:2024-8-14 11:38:37
地板
本帖最后由 鸳鸯配2024 于 2024-8-14 11:40 编辑
Wilson.Zhang 发表于 2024-8-14 10:07
您好!默认表单保护对整表生效,因为单元格的锁定状态默认为锁定,在开启表单保护前对想要编辑的单元格解开 ...

还发现一个问题。
如果设计了锁定后,不能再给单元格,添加样式了。所有添加样式的方法都是不可编辑的。

img_v3_02do_5153b45c-1ebc-41fc-8fcf-1748d51d8a6g.jpg757636108.png
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-8-14 11:43:02
5#
鸳鸯配2024 发表于 2024-8-14 11:38
还发现一个问题。
如果设计了锁定后,不能再给单元格,添加样式了。所有添加样式的方法都是不可编辑的。 ...

您描述的现象是开启表单保护后的效果,表单保护的作用就是禁止对表单内的部分功能和单元格进行操作。
回复 使用道具 举报
鸳鸯配2024
金牌服务用户   /  发表于:2024-8-14 11:44:31
6#
Wilson.Zhang 发表于 2024-8-14 11:43
您描述的现象是开启表单保护后的效果,表单保护的作用就是禁止对表单内的部分功能和单元格进行操作。

如何能即开启表单保护,又能让可编辑的区域,添加样式?
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-8-14 11:45:47
7#
本帖最后由 Wilson.Zhang 于 2024-8-14 11:49 编辑
鸳鸯配2024 发表于 2024-8-14 10:57
这样写还是不行,帮忙看下问题在哪

不能默认就锁定吗?

单元格有一个锁定状态,该状态默认为“锁定“,该状态配合表单保护功能对单元格产生保护效果,禁止对单元格的编辑操作。如果您想让表格处于表单保护状态,同时又需要对其中部分单元格进行操作,那可行的办法是:在开启表单保护前,就对未来需要再编辑操作的单元格解开锁定状态,这样就让这些单元格脱离了表单保护的范围。如果您不确定未来需要操作的单元格,可以在未来实际操作这些单元格时临时解除表单保护,编辑单元格后再开启;或者临时解除表单后解锁这些单元格的锁定状态,再开启表单保护后即可永久操作这些单元格。
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-8-14 11:52:19
8#
鸳鸯配2024 发表于 2024-8-14 11:44
如何能即开启表单保护,又能让可编辑的区域,添加样式?

可以参考7楼描述的方案。
回复 使用道具 举报
鸳鸯配2024
金牌服务用户   /  发表于:2024-8-14 11:56:18
9#
Wilson.Zhang 发表于 2024-8-14 11:45
单元格有一个锁定状态,该状态默认为“锁定“,该状态配合表单保护功能对单元格产生保护效果,禁止对单元 ...

有没有这种 demo 可以参考一下啊?
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-8-14 12:25:22
10#
鸳鸯配2024 发表于 2024-8-14 11:56
有没有这种 demo 可以参考一下啊?

您可以参考如下代码实现在开启表单保护时对需要操作的单元格再编辑,设置样式同理:
  1. sheet.options.isProtected = false;
  2. let sheetStyle = sheet.getDefaultStyle();
  3. sheetStyle.locked = false;
  4. for (var i = 0; i < 2; i++) {
  5.     for (var j = 0; j < 2; j++) {
  6.         console.log(i, '---行---000---列---', j);
  7.         sheet.setValue(i, j, 'test');
  8.     }
  9. }
  10. sheet.options.isProtected = true;
复制代码


回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部