找回密码
 立即注册

QQ登录

只需一步,快速开始

gaobowen

中级会员

87

主题

227

帖子

810

积分

中级会员

积分
810

微信认证勋章

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

15 个回复

倒序浏览
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-4-27 17:45:25
沙发
同样还是参考https://gcdn.grapecity.com.cn/forum.php?mod=viewthread&tid=47191,但是V12升级了样式逻辑。如果要兼容以前的Style,需要设置。
LegacyBehaviors.All或者LegacyBehaviors.Style

在desinger.cs声明spread的时候加上LegacyBehaviors this.fpSpread1 = new FarPoint.Win.Spread.FpSpread(FarPoint.Win.Spread.LegacyBehaviors.Style);

https://www.grapecity.com.cn/blo ... features-like-excel

https://www.grapecity.com/spread ... egacyBehaviors.html
回复 使用道具 举报
gaobowen
中级会员   /  发表于:2020-4-28 10:29:05
板凳
感谢版主回复,我又试了一下,好像还是有问题。请问还有哪里没设置对呢?
1,Spread声明如下
Me.FpSpread1 = New FarPoint.Win.Spread.FpSpread(FarPoint.Win.Spread.LegacyBehaviors.All)
2,在load方法中设置了DefaultStyle.Locked为False
Me.FpSpread1.ActiveSheet.DefaultStyle.Locked=False
3,LegacyBehaviors属性设置为All

但是在load方法中,查看【Me.FpSpread1.ActiveSheet.Cells(1, 1).Locked】,仍然为True。
回复 使用道具 举报
gaobowen
中级会员   /  发表于:2020-4-28 10:53:34
地板
另外,【Me.FpSpread1.ActiveSheet.DefaultStyle.Locked】这个值,在设置之前,本身就是false。
回复 使用道具 举报
gaobowen
中级会员   /  发表于:2020-4-28 11:08:11
5#
本帖最后由 gaobowen 于 2020-4-28 14:41 编辑

还有,虽然【Me.FpSpread1.ActiveSheet.Cells(1, 1).Locked】的值是true,但是在画面上,Cells(1, 1)这个单元格是可以编辑的,有点奇怪啊。

----这个问题调查出来了,ActiveSheet.Protect和ActiveSheet.DefaultStyle.Locked同时设置成True,单元格就不能编辑了。
回复 使用道具 举报
gaobowen
中级会员   /  发表于:2020-4-28 14:31:46
6#
Cells().Locked是【FarPoint.Win.Spread.Cell】对象的属性。

对应方法Me.FpSpread1.ActiveSheet.DefaultStyle.Locked=False中设置的
Locked是【FarPoint.Win.Spread.StyleInfo】对象的属性。

这2个Locked不是一个对象,这样修改正确吗?有点疑问
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-4-28 15:28:02
7#
Cell ,Row,Sheet上都可以有样式,样式包含Locked,优先级不一样,Cell优先级最高。
改DefaultStyle.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 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 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。

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