找回密码
 立即注册

QQ登录

只需一步,快速开始

sanyue
中级会员   /  发表于:2024-5-24 14:36  /   查看:594  /  回复:17
1金币
本帖最后由 Richard.Huang 于 2024-5-29 16:17 编辑

产品:SpreadJS
版本:V17

可不可以通过配置设置tojson时不导出保护关系,使得tojson以后fromjson回来的还是可以编辑。

我们项目内的场景:用户可以配置某列是否可以编辑,假设用户在给第C列设置不可编辑之后,打开设计器编辑页面会使用locked(true)给第C列设置保护,此时用户添加了一下数据,保存的时候会使用tojson导出,保存到后端(有保护关系)。这个时候如果用户再给第C列设置可编辑,但是再打开设计器页面第C列还是不可编辑,因为后端返回的fromjson数据是有保护关系的。

所以能否通过设置配置导出时不包含保护关系?

17 个回复

倒序浏览
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2024-5-24 15:35:33
沙发
您好,我们无法通过配置或者方法一键消除单元格中的locked属性,因为从您的描述上来看,用户是将locked设置在列上,我们的locked属性是在style上的,而style有一个样式优先级的问题,默认样式< 行 < 列 < 单元格。默认样式可以一键设置,但是默认样式作用范围是整个工作表,且他的优先级最小,当单元格上有其他样式(比如用户在列上设置locked属性)就会覆盖默认样式,
因此综上,您要嘛记录用户设置locked属性的操作,在保存时执行用户设置locked为true的逆操作。要嘛,直接for循环为您的每个单元格设置locked = true
回复 使用道具 举报
sanyue
中级会员   /  发表于:2024-5-24 16:04:23
板凳
Richard.Huang 发表于 2024-5-24 15:35
您好,我们无法通过配置或者方法一键消除单元格中的locked属性,因为从您的描述上来看,用户是将locked设置 ...

但是一个spread有好多个sheet,一个sheet有几十万行,还有好多列,tojson本来就很慢了,再tojson前遍历这么多,很影响性能的啊
回复 使用道具 举报
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2024-5-24 18:14:13
地板
sanyue 发表于 2024-5-24 16:04
但是一个spread有好多个sheet,一个sheet有几十万行,还有好多列,tojson本来就很慢了,再tojson前遍历这 ...

或许您可以直接将工作表保护解除?这样每个单元格都可以编辑了。这样就不需要纠结于locked属性的优先级问题了。
如果上述操作还是无法满足您的需求,那么请您详细描述一下您的场景,或许我们可以换另外一个方法来实现您的需求
回复 使用道具 举报
sanyue
中级会员   /  发表于:2024-5-27 18:41:20
5#
Richard.Huang 发表于 2024-5-24 18:14
或许您可以直接将工作表保护解除?这样每个单元格都可以编辑了。这样就不需要纠结于locked属性的优先级问 ...

就是有暂存功能,点击暂存的时候要tojson出来给后端保存,保存完之后还要不影响保护功能,同时保存到后端的不包括保护功能。
回复 使用道具 举报
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2024-5-28 09:49:01
6#
sanyue 发表于 2024-5-27 18:41
就是有暂存功能,点击暂存的时候要tojson出来给后端保存,保存完之后还要不影响保护功能,同时保存到后端 ...

那么监听用户编辑事件来实现一个禁止编辑的功能能否满足您的需求呢?
代码示例如下:
  1. sheet.bind(GC.Spread.Sheets.Events.EditStarting, function (sender, args) {
  2.     args.cancel = true;
  3. });
复制代码
API参考:https://demo.grapecity.com.cn/sp ... Events#editstarting
回复 使用道具 举报
sanyue
中级会员   /  发表于:2024-5-28 10:01:32
7#
Richard.Huang 发表于 2024-5-28 09:49
那么监听用户编辑事件来实现一个禁止编辑的功能能否满足您的需求呢?
代码示例如下:
API参考:https:/ ...

每个单元格进入编辑状态的时候,都判断一下是不是在不可编辑区域吗?
回复 使用道具 举报
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2024-5-28 11:41:57
8#
sanyue 发表于 2024-5-28 10:01
每个单元格进入编辑状态的时候,都判断一下是不是在不可编辑区域吗?

您好,是的,也就是说您需要维护一个数组,进行判断当前用户编辑的这个单元格是否在这个数组中。如果这个方法无法满足您的需求,就只能按照上面的锁定 + 表单保护的方式来实现您的需求了
回复 使用道具 举报
sanyue
中级会员   /  发表于:2024-5-28 15:10:35
9#
Richard.Huang 发表于 2024-5-28 11:41
您好,是的,也就是说您需要维护一个数组,进行判断当前用户编辑的这个单元格是否在这个数组中。如果这个 ...

就是怎么加的保护就得怎么去掉呗?
回复 使用道具 举报
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2024-5-28 17:32:10
10#
sanyue 发表于 2024-5-28 15:10
就是怎么加的保护就得怎么去掉呗?

您好,是的。因为最高优先级上的单元格样式,无法被低优先级的样式所覆盖,且每个单元格进入编辑状态时去判断的性能很好,您可以综合测试后,选取您觉得合适的方案。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部