找回密码
 立即注册

QQ登录

只需一步,快速开始

品茗-3

金牌服务用户

37

主题

95

帖子

344

积分

金牌服务用户

积分
344
品茗-3
金牌服务用户   /  发表于:2019-4-8 15:06  /   查看:5993  /  回复:10
本帖最后由 品茗-3 于 2019-4-8 15:21 编辑

上次已明确若使用FpSpread tmp = new FpSpread(LegacyBehaviors.None)方式新建表格,实现了SelectionPolicy的继承,但页的Protect 属性丢失
详见:https://gcdn.grapecity.com.cn/fo ... 53261&extra=&page=2
image.png983594665.png
现又出现此类相似问题,
使用FpSpread tmp = new FpSpread(LegacyBehaviors.None)方式新建表格,
对于之前页的Protect 属性丢失问题,目前临时采用每次打开重新设置Protect= true,
但新问题爆发,新建表格的所有单元格的locked都为true;
引起表格编辑、新的行列插入后编辑等诸多不便,
需每次对初始及新插入的单元格做locked设置,大大降低程序工作效率,望一并解决

能否给出目前的解决方案?针对新增的行列
测试程序在附件中 SpreadDemo.rar (12.37 MB, 下载次数: 2)

10 个回复

倒序浏览
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2019-4-9 15:36:25
沙发

  1.                     tmp.AddNewSheetView(0, "新建");
  2.                     tmp.ActiveSheet.DefaultStyle.Locked = false;
复制代码


这个变化也是为了和Excel行为一致,add后修改下默认style
回复 使用道具 举报
品茗-3
金牌服务用户   /  发表于:2019-4-9 19:46:18
板凳
本帖最后由 品茗-3 于 2019-4-9 19:58 编辑
dexteryao 发表于 2019-4-9 15:36
这个变化也是为了和Excel行为一致,add后修改下默认style
图一:
image.png747243041.png

图二

image.png570591125.png
如图一:为什么默认本身就是false时无效,必须要再设置一遍才生效?
如图二:同时设置页保护后,新插入的行列仍都是锁定状态,如何解决?



回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2019-4-10 11:40:50
地板
1,V12里cell默认为true了,和Excel保持一致
2. 插入行列如果没有修改样式也是走的默认值,模式是false,还是false。
对于当前设置,
tmp.AddNewSheetView(0, "新建");
                    tmp.ActiveSheet.Protect = true;
                    tmp.ActiveSheet.DefaultStyle.Locked = false;

新添加行
            fpSpread1.ActiveSheet.AddRows(0, 1);

新建行都是可以编辑的。
回复 使用道具 举报
品茗-3
金牌服务用户   /  发表于:2019-4-10 13:58:21
5#
dexteryao 发表于 2019-4-10 11:40
1,V12里cell默认为true了,和Excel保持一致
2. 插入行列如果没有修改样式也是走的默认值,模式是false, ...

能不能按我的demo走,否则我上面提供给你们demo干嘛,你们老是模糊的回答,然后反馈给我没问题,然后我再反复这个问题,是不是太浪费时间和精力?
若没问题我又为何要单独把代码剥离成demo给你们呢,若我的demo有问题,请针对demo指出问题,
有demo没问题,就麻烦给出解决方案,开发项目很急,没这么多时间反复折腾。
111.gif
如图,插入列反馈的cells[0,0].Locked 为true,明显不能编辑,不知道你回答的能编辑是怎么来的,若我demo有问题,请指出,谢谢!

SpreadDemo.rar (12.64 MB, 下载次数: 1)
image.png646152343.png
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2019-4-10 19:28:10
6#
抱歉,看你描述说插入行列都锁定,我这边只测试了行并没有测试列。的确插入的列是锁定的。
行没锁定但是列锁定应该是bug。
关于LegacyBehaviors兼容性的问题,我这边会和开发沟通,反馈下质量问题。
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2019-4-13 00:05:16
7#
您好,经过和开发的确认,是我之前对LegacyBehaviors理解不够深入。
对于老得版本,样式是设置在不同位置,比如单元格,列,DefaultStyle上,渲染时候再按照优先级生效。
但是对于Excel并没有列样式或者默认样式的概念,所以V12采用了Excel的样式逻辑。设置DefaultStyle和列样式后,会先合并再存储,所以新增的列不会继承DefaultStyle,需要再次设置。 如果需要想老版本一样样式继续继承要设置LegacyBehaviors.Style。以及如果希望默认Locked全部为false可以设置LegacyBehaviors.DefautProperty;

关于这样的设计我现在的逻辑我觉得还是有些问题,还继续再和开发沟通,有进展再和您反馈。
回复 使用道具 举报
品茗-3
金牌服务用户   /  发表于:2019-4-18 09:47:37
8#
dexteryao 发表于 2019-4-13 00:05
您好,经过和开发的确认,是我之前对LegacyBehaviors理解不够深入。
对于老得版本,样式是设置在不同位置 ...

好的,麻烦了
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2019-4-18 16:07:02
9#
经过确认,这个是控件设计,对于Excel,插入列后会智能根据前后列的情况复制样式包括lock。
对于SpreadJS,仅仅是插入列,如果有需求,需要在根据业务去复制样式。
作为控件,接口功能设计偏向于灵活
回复 使用道具 举报
品茗-3
金牌服务用户   /  发表于:2019-4-19 13:34:38
10#
本帖最后由 品茗-3 于 2019-4-19 13:53 编辑
dexteryao 发表于 2019-4-18 16:07
经过确认,这个是控件设计,对于Excel,插入列后会智能根据前后列的情况复制样式包括lock。
对于SpreadJS ...

既然是智能判断,那么插入列和插入行应该是同一个算法效果,理应保持相同的继承,不应该一个是锁定一个是可编辑,在者,以兼容方式的理解,应判断型继承之前表格样式的设计,再根据自己的需求去更改之后的业务,而不是通过业务去重新定义设计,尤其是spreadWinFrom锁定、表页保护等这些大规模影响表格本身的属性,若不兼容继承,每次要重新设置,本身就否定了兼容自身的定义,所以在兼容方面,需注意实际操作和用户体验是否满足正常要求。
举一个简单的例子:
表格在升级之前,是全局单元格可编辑,
在升级之后,使用LegacyBehaviors.None方式继承之前的表格,却给我全局锁定不可编辑,
若不做其他操作,升级前后表格已发生巨大变化,那么这就表明没有做到最直观的兼容。

需开发再次主动去解锁的这些操作,其实是在还原升级之前的状态,可理解为是在实现兼容这个过程中发生的命令,

这理应封装在使用LegacyBehaviors.None兼容升级中,而不是要求用户去重新改变设计。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部