找回密码
 立即注册

QQ登录

只需一步,快速开始

jiqimao 讲师达人认证
金牌服务用户   /  发表于:2018-9-4 13:02  /   查看:3281  /  回复:9
我们需要保存出和用户所见不一致的ssjson,比如有一些样式可以认为是用户的临时样式,保存的时候并不需要,但是我们又不想让用户看到他的样式在保存的一瞬间发生了改变,所以我们想这样行不行:
1.先suspendPaint
2.修改样式
3.获取ssjson
4.resumePaint
这样是否就可以做到,既在获得ssjson时去掉了不需要保存的样式,又不会让客户看到实际的表格页面上发生了变化?

如果以上策略不行的话,有别的方案可以做到吗?
谢谢

9 个回复

倒序浏览
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2018-9-4 16:00:22
沙发
通过fromjson和tojson序列化做一个深拷贝,修改深拷贝再序列化成ssjson:
1.首先初始化另一个spread 不要给绑定ID,这样该spread在页面上是不可见的,但是可以通过定义变量来进行操作。
2.将页面的spread tojson序列化,然后不可见的这个spread fromjson 反序列化。
3.在不可见的这个spread对象上调用相关结构进行删除样式的操作。
4.toJSON序列化这个不可见的spread就可以了。
回复 使用道具 举报
jiqimao讲师达人认证
金牌服务用户   /  发表于:2018-9-4 16:25:16
板凳
请问一下fromjson和tojson的性能如何?性能高的话我们可以在保存时直接做,如果性能不好的话,我们就需要异步进行保存了
回复 使用道具 举报
gaoyuran
注册会员   /  发表于:2018-9-4 16:44:27
地板
jiqimao 发表于 2018-9-4 16:25
请问一下fromjson和tojson的性能如何?性能高的话我们可以在保存时直接做,如果性能不好的话,我们就需要异 ...

大哥你试一试就知道了。。。  性能挺好的
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2018-9-4 18:08:59
5#
首先感谢楼上对产品的认可。
另外toJSON本来就是用来获取ssjson的。fromJSON是将ssjson反序列化进行展示的接口,这两个是非常常用的功能,通常是不会有性能问题的,当然特别变态的数据也会影响性能,这另当别论。最好的办法就是自己去试一下,您可以用您业务上的测试数据一式便知
回复 使用道具 举报
jiqimao讲师达人认证
金牌服务用户   /  发表于:2018-9-4 21:48:48
6#
ClarkPan 发表于 2018-9-4 16:00
通过fromjson和tojson序列化做一个深拷贝,修改深拷贝再序列化成ssjson:
1.首先初始化另一个spread 不要 ...

那请问一下,这个策略适用于某工作表吗?
比如说我们只希望工作表1的修改被保存,工作表2的不要被保存。
是否可以在不可见的sp上进行from json的时候只导入指定工作表的内容?
如果不行有什么方案呢?
回复 使用道具 举报
gaoyuran
注册会员   /  发表于:2018-9-5 11:48:58
7#
jiqimao 发表于 2018-9-4 21:48
那请问一下,这个策略适用于某工作表吗?
比如说我们只希望工作表1的修改被保存,工作表2的不要被保存。 ...

spread提供了删除表单的方法,可以直接把你不要的表单删除。
如果你想从 Spread 控件上删除一个表单, 可以通过以下代码. 示例代码展示从 Spread 控件删除第一个表单。
spread.removeSheet(0);
另外你可以直接操作toJson之后的数据,不过这可能会造成不可预期的问题,因为你可能不知道你删除对应sheet后还要改其他sheet的index,要改目前的sheet数量等等,所以建议用第一种方法。
ps : 不知道我的回答正不正确,如有错误,请ClarkPan老大指正。

评分

参与人数 1金币 +500 收起 理由
Clark.Pan + 500 赞一个!

查看全部评分

回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2018-9-5 13:42:25
8#
sheet也有对应的tojson和fromjson
回复 使用道具 举报
jiqimao讲师达人认证
金牌服务用户   /  发表于:2018-9-5 14:10:30
9#
gaoyuran 发表于 2018-9-5 11:48
spread提供了删除表单的方法,可以直接把你不要的表单删除。
如果你想从 Spread 控件上删除一个表单, 可 ...

感谢热情答复
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2018-9-5 14:53:03
10#
gaoyuran 发表于 2018-9-5 11:48
spread提供了删除表单的方法,可以直接把你不要的表单删除。
如果你想从 Spread 控件上删除一个表单, 可 ...

这个方式没问题,但要建立在深拷贝的基础上,删除拷贝里面不需要被导出的sheet,然后再导出, 不然直接将显示的内容删掉了就不好了
ps:家相互学习共同进步,畅所欲言,只要回答我们就有金币奖励,金币可以在论坛兑换实物奖励哦大
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部