找回密码
 立即注册

QQ登录

只需一步,快速开始

PlayerXXX

论坛元老

2

主题

40

帖子

6069

积分

论坛元老

积分
6069

圣诞拼拼乐

最新发帖
PlayerXXX
论坛元老   /  发表于:2021-1-29 15:46  /   查看:2749  /  回复:5
我有一些单元格设置了locked = true,不允许编辑,想要改变该单元格的值只能通过setValue。但现在新增了个需求,想要这部分单元格可以支持下拉填充,请问有什么办法解决这个问题吗?

5 个回复

倒序浏览
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-1-29 16:10:31
沙发
您好,设置表单保护后就不能实现下拉填充了,二者行为是有矛盾的。
您为什么要使单元格不可编辑呢?请结合业务逻辑描述下您的需求。
这边看下如果不使用表单保护,有没有其他的解决方案。
回复 使用道具 举报
PlayerXXX
论坛元老   /  发表于:2021-1-29 16:41:57
板凳
设置表单保护是因为该单元格只能从一些固定的内容中选一条来填入(即不能让用户随便填)所以当用户在双击该单元格的时候,通过GC.Spread.Sheets.Events.CellDoubleClick弹出一个下拉框,当用户选好了之后,通过setValue将用户选择的内容设置到单元格里。
那么,有在不设置表单保护的情况下,让用户不能随便编辑单元格内容的方法吗?
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-1-29 16:48:14
地板
“通过GC.Spread.Sheets.Events.CellDoubleClick弹出一个下拉框,当用户选好了之后,通过setValue将用户选择的内容设置到单元格里。”
根据你上述描述的情况,您提供一个简单的demo,只需能实现引号内的需求即可。

这边根据demo和需求再具体调研下,有解决方案的话就在原 demo基础修改,预计下周一更新进展。

回复 使用道具 举报
PlayerXXX
论坛元老   /  发表于:2021-1-29 18:10:56
5#
demo.zip (938 Bytes, 下载次数: 79)
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-2-1 09:17:24
6#
本帖最后由 lynn512 于 2021-2-1 10:58 编辑

收到,这边需要先调研下,预计下午更新问题进展。
--------------------------------------------------------

可以不使用表单保护,通过监听 EditStarting 事件实现不可编辑。这样不会影响下拉填充。
代码如下:
  1. //activeSheet.options.isProtected = true
  2. ......
  3. activeSheet.bind(GC.Spread.Sheets.Events.EditStarting, function (sender, args) {
  4.                 console.log("Start cell editing.");
  5.                 args.cancel = true;
  6.             });
复制代码
API: https://demo.grapecity.com.cn/sp ... #event:EditStarting


详细代码请查看附件demo


EditStarting.html

2.31 KB, 下载次数: 60

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