找回密码
 立即注册

QQ登录

只需一步,快速开始

gaobowen

中级会员

87

主题

227

帖子

810

积分

中级会员

积分
810

微信认证勋章

gaobowen
中级会员   /  发表于:2020-4-27 15:11  /   查看:8203  /  回复:15
10金币
你好,在spread12中
Cells().Locked的默认值是True,如何设置,使其默认值更改为False?
谢谢。

15 个回复

正序浏览
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-5-8 17:10:41
16#
gaobowen 发表于 2020-4-29 17:25
之前就有过按照您说的进行测试,结果还是不行。
那么应该就能得出结论:Cells().Locked默认值无法修改。

我们的结果还是有些不一样,实在不行你给我一个完整的工程吧。
回复 使用道具 举报
gaobowen
中级会员   /  发表于:2020-5-8 15:18:29
15#
本帖最后由 gaobowen 于 2020-5-8 16:59 编辑


回复 使用道具 举报
gaobowen
中级会员   /  发表于:2020-4-29 17:25:02
14#
之前就有过按照您说的进行测试,结果还是不行。
那么应该就能得出结论:Cells().Locked默认值无法修改。
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-4-29 14:49:19
13#
Me.FpSpread1 = New FarPoint.Win.Spread.FpSpread(FarPoint.Win.Spread.LegacyBehaviors.Style)
不加载resources您再试下,如果还没有好应该是老版本的bug
好了的话就是因为加载的模板已经固定了LegacyBehaviors,需要重新再设置模板
回复 使用道具 举报
gaobowen
中级会员   /  发表于:2020-4-29 11:59:59
12#
我这里还是不行,我用的是vb.net。spread12
代码如下,请您帮忙看看
1,Spread声明代码:
Me.FpSpread1 = New FarPoint.Win.Spread.FpSpread(FarPoint.Win.Spread.LegacyBehaviors.Style, CType(resources.GetObject("resource1"),System.IO.MemoryStream))
Me.FpSpread1_Sheet1 = Me.FpSpread1.GetSheet(0)

2,load方法里代码
Me.FpSpread1.ActiveSheet.RowCount = 3
Me.FpSpread1.ActiveSheet.DefaultStyle.Locked = False
Me.FpSpread1.ActiveSheet.Protect = True
Debug.WriteLine("1:" & Me.FpSpread1.ActiveSheet.Cells(0, 0).Locked)
Me.FpSpread1.ActiveSheet.RowCount = 0
Me.FpSpread1.ActiveSheet.RowCount = 3
Debug.WriteLine("2:" & Me.FpSpread1.ActiveSheet.Cells(0, 0).Locked)

3,运行结果:
1:True
2:True
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-4-28 17:30:04
11#
不会的,locked 的fasle 的样式在sheet上,和单元格没关系。即使设置RowCount = 0, 再设置RowCount=100,所有的单元格lock还是false。一下是我的测试代码。如果还有问题,您提供下您测试的项目。

            FpSpread spread = new FpSpread(LegacyBehaviors.Style);
            spread.Sheets.Count = 3;
            spread.ActiveSheet.DefaultStyle.Locked = false;
            spread.ActiveSheet.Protect = true;
            Console.WriteLine(spread.ActiveSheet.Cells[0,0].Locked);
            spread.ActiveSheet.RowCount = 0;
            spread.ActiveSheet.RowCount = 1;
            Console.WriteLine(spread.ActiveSheet.Cells[0, 0].Locked);
回复 使用道具 举报
gaobowen
中级会员   /  发表于:2020-4-28 17:21:11
10#
本帖最后由 gaobowen 于 2020-4-28 17:28 编辑

多谢版主的回复。
DefaultStyle.Locked = false这样设置之后,
GetStyleInfo(0,0).Locked的值确实是false。
您说的逻辑我也理解。ActiveSheet.RowCount = 0之后,Cells().Locked的默认值又恢复成true。
但是,我的需求就是改变Cells().Locked的默认值(不是改Locked的值,而是默认值)
就是说,即使改了ActiveSheet.RowCount = 0,新增加的Cell 默认属性还是false。

回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-4-28 17:17:22
9#
因为以前那个cell在你设置RowCount = 0的时候已经删除了。
新增加的Cell 默认属性就是true。这个逻辑是没问题的。
您需要设置DefaultStyle
            FpSpread spread = new FpSpread(LegacyBehaviors.Style);
            spread.Sheets.Count = 3;
            spread.ActiveSheet.DefaultStyle.Locked = false;
            spread.ActiveSheet.Protect = true;
            Console.WriteLine(spread.ActiveSheet.GetStyleInfo(0,0).Locked);
        }
回复 使用道具 举报
gaobowen
中级会员   /  发表于:2020-4-28 15:38:18
8#
本帖最后由 gaobowen 于 2020-4-28 16:31 编辑

多谢版主回答。但是帖子本身的问题还是没有解决。
修改了cell的Locked值为False,修改后,又执行了ActiveSheet.RowCount = 0,
然后再次追加新行之后(例如:ActiveSheet.RowCount = 1)        
cell的Locked值又变成True了。
这是不是证明其实没有真正改掉cell的Locked的默认值呢?
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-4-28 15:28:02
7#
Cell ,Row,Sheet上都可以有样式,样式包含Locked,优先级不一样,Cell优先级最高。
改DefaultStyle.Locked优先级最低。根据需求设置不同层级的属性。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部