找回密码
 立即注册

QQ登录

只需一步,快速开始

前端小菜鸟

初级会员

25

主题

90

帖子

273

积分

初级会员

积分
273
前端小菜鸟
初级会员   /  发表于:2024-11-28 14:16  /   查看:129  /  回复:4
10金币
我有一个表单,因为要设置前几列不可编辑,后面列可编辑。设置了表单保护。


setOptions(sheet) {
    var option = {
      allowSelectLockedCells: true,//布尔值, 用户是否可以选中被锁定的单元格。
      allowSelectUnlockedCells: true,//布尔值, 用户是否可以选中未被锁定的单元格。
      allowSort: false,//布尔值,用户是否可以对一片单元格区域进行排序。
      allowFilter: true,//布尔值,用户是否可以对一片单元格区域进行筛选。
      allowEditObjects: false,//布尔值,用户是否可以编辑浮动元素。
      allowResizeRows: true,//布尔值,用户是否可以改变行高。
      allowResizeColumns: true,//布尔值,用户是否可以改变列宽。
      allowDragInsertRows: false,//布尔值,用户是否可以拖拽插入行。
      allowDragInsertColumns: false,//布尔值,用户是否可以拖拽插入列。
      allowInsertRows: false,//布尔值,用户是否可以插入行。
      allowInsertColumns: false,//布尔值,用户是否可以插入列。
      allowDeleteRows: false,//布尔值,用户是否可以删除行。
      allowDeleteColumns: false,//布尔值,用户是否可以删除列。
      allowOutlineRows: true,//布尔值,用户是否可以展开或者折叠行组合。
      allowOutlineColumns: true,//布尔值,用户是否可以展开或者折叠列组合。
    };
    sheet.options.isProtected = true;
    sheet.options.protectionOptions = option;
  }
//  处理表格中的可编辑列


//右键插入注释列方法

  AddColRemark(sheet) {
    if (sheet) {
      var sels = sheet.getSelections();
      var newCol = sels[0].col;
      sheet.addColumns(newCol, 1);
      sheet.setValue(0, newCol, "﹡", GC.Spread.Sheets.SheetArea.colHeader);
      sheet.setColumnWidth(newCol, 150);
      var style = new GC.Spread.Sheets.Style();
      style.locked = false;
      style.foreColor = 'rgb(79,129,189)'
      style.font = 'bold 11pt SimSun';
      sheet.setStyle(- 1, newCol, style, GC.Spread.Sheets.SheetArea.viewport);
      var styleColor = new GC.Spread.Sheets.Style();
      styleColor.backColor = 'yellow'
      sheet.setStyle(- 1, newCol, styleColor, GC.Spread.Sheets.SheetArea.colHeader);
      sheet.setFormatter(-1, newCol, '');
    }
  }




用上面的方法,新插入的列没办法编辑。请问该怎么处理呢


最佳答案

查看完整内容

您好!根据您提供的代码片段,了解到您对sheet开启了表单保护且禁止了右键菜单中的“插入列”选项,但是这个设置不影响通过代码对sheet插入列。在开启表单保护时,插入的新列中各单元格也是锁定状态,不过发现您通过Style对新增列取消了锁定状态,那么表单保护将不阻止对这列单元格的输入操作,如下动图所示: 我使用17.1.9版本测试,请教下您使用的是14版本的哪个具体版本?您可以在官网在线表格编辑器亲测下上述代码的执行 ...

4 个回复

倒序浏览
最佳答案
最佳答案
Wilson.Zhang
超级版主   /  发表于:2024-11-28 14:16:31
来自 2#
您好!根据您提供的代码片段,了解到您对sheet开启了表单保护且禁止了右键菜单中的“插入列”选项,但是这个设置不影响通过代码对sheet插入列。在开启表单保护时,插入的新列中各单元格也是锁定状态,不过发现您通过Style对新增列取消了锁定状态,那么表单保护将不阻止对这列单元格的输入操作,如下动图所示:
表单保护新增列.gif

我使用17.1.9版本测试,请教下您使用的是14版本的哪个具体版本?您可以在官网在线表格编辑器亲测下上述代码的执行效果:
https://demo.grapecity.com.cn/SpreadJS/WebDesigner/index.html
回复 使用道具 举报
前端小菜鸟
初级会员   /  发表于:2024-11-28 19:02:23
3#
本帖最后由 前端小菜鸟 于 2024-11-28 19:03 编辑
Wilson.Zhang 发表于 2024-11-28 15:30
您好!根据您提供的代码片段,了解到您对sheet开启了表单保护且禁止了右键菜单中的“插入列”选项,但是这 ...

setOptions、AddColRemark这两个 都是被封装的方法。在我的页面里被调用,一个是初始化时候调用了表单保护,一个是插入列时候被调用。目前情况是只要我注释上这个表单保护的功能。所有的列都能够被编辑,只要把表单保护加上,那就是设置不可编辑的列不可编辑,设置可编辑的列可编辑,但是后续调用方法插入的列就不能被编辑了


   "@grapecity/spread-excelio": "^14.2.5",
    "@grapecity/spread-sheets": "^14.2.5",
    "@grapecity/spread-sheets-angular": "^14.2.5",
    "@grapecity/spread-sheets-resources-zh": "^14.2.5",
    "@grapecity/spread-sheets-charts": "^14.2.5",
    "@grapecity/spread-sheets-shapes": "^14.2.5",
    "@grapecity/spread-sheets-print": "^14.2.5",
    "@grapecity/spread-sheets-barcode": "^14.2.5",
    "@grapecity/spread-sheets-pdf": "^14.2.5",
    "@grapecity/spread-sheets-designer-resources-cn": "^14.2.5",
    "@grapecity/spread-sheets-designer": "^14.2.5",


回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-11-29 12:29:11
4#
前端小菜鸟 发表于 2024-11-28 19:02
setOptions、AddColRemark这两个 都是被封装的方法。在我的页面里被调用,一个是初始化时候调用了表单保 ...

我使用您提供的代码片段集成在HTML文件中测试正常,而且我分别在14.2.5和17.1.9版本测试均正常,提供给您测试了解。另外,看到您提供的引入依赖版本,建议您将版本号前的“^”去除,再重新引入依赖编译项目看看是否还会出现问题。如果还存在问题,需要您提供一个能够复现问题的demo。

新增列.html

6.76 KB, 下载次数: 10

回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-12-2 15:46:49
5#
您好!由于您较长时间未回复,且从跟帖回复中了解到问题已得到有效解答,那就结帖了。如有新问题,欢迎发新帖沟通。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部