找回密码
 立即注册

QQ登录

只需一步,快速开始

dengxpeng

注册会员

11

主题

61

帖子

180

积分

注册会员

积分
180

圣诞拼拼乐

dengxpeng
注册会员   /  发表于:2020-12-25 17:40  /   查看:6347  /  回复:15



用  spread.fromJSON(JSON.parse(json)); 这种 方式加载进来,在数据模板里面,绑定的关系丢失了。
用自带的 文件菜单里面的,导入的方式 没有问题。



image.png624490050.png

cost_contract

18.17 KB, 阅读权限: 1, 下载次数: 311

15 个回复

倒序浏览
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2020-12-25 18:03:41
沙发
您好,在文件导入的时候,设计器并不止执行spread.fromJSON(),设计器还会将绑定关系映射在字段列表的tree node上。

所以仅执行 spread.fromJSON(JSON.parse(json)); 是不会将绑定关系加载。
回复 使用道具 举报
dengxpeng
注册会员   /  发表于:2020-12-28 09:24:54
板凳
DerrickJiao 发表于 2020-12-25 18:03
您好,在文件导入的时候,设计器并不止执行spread.fromJSON(),设计器还会将绑定关系映射在字段列表的tree  ...

哦。
那我这边还需要做哪些操作,才能还原导入操作一样的效果呢?
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2020-12-28 10:04:39
地板
dengxpeng 发表于 2020-12-28 09:24
哦。
那我这边还需要做哪些操作,才能还原导入操作一样的效果呢?

这个是designer的方法,在设计器中,导入json后,设计器会执行下面的代码
  1. spreaddesignerBindingPathSchema = json.designerBindingPathSchema;
  2.                     designer.setData("treeNodeFromJson", JSON.stringify(json.designerBindingPathSchema));
  3.                     designer.setData("oldTreeNodeFromJson", JSON.stringify(json.designerBindingPathSchema));
  4.                     delete json.designerBindingPathSchema;
复制代码
回复 使用道具 举报
dengxpeng
注册会员   /  发表于:2020-12-28 13:27:33
5#
DerrickJiao 发表于 2020-12-28 10:04
这个是designer的方法,在设计器中,导入json后,设计器会执行下面的代码

搞定了
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2020-12-28 13:31:02
6#

解决了就好,没问题的话这边先给您结贴了,有新问题欢迎开新帖交流~
回复 使用道具 举报
dengxpeng
注册会员   /  发表于:2020-12-28 13:36:33
7#
DerrickJiao 发表于 2020-12-28 13:31
解决了就好,没问题的话这边先给您结贴了,有新问题欢迎开新帖交流~

尴尬了。。
我发现 spread.toJSON() 保存过后,绑定的关系又没有了..
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2020-12-28 13:44:31
8#
dengxpeng 发表于 2020-12-28 13:36
尴尬了。。
我发现 spread.toJSON() 保存过后,绑定的关系又没有了..

请问如何复现此问题呢?您具体的操作步骤是怎样的呢?

是调用spread.toJSON()之后直接点字段列表没有关系还是其他情况呢?
回复 使用道具 举报
dengxpeng
注册会员   /  发表于:2020-12-28 13:50:12
9#
DerrickJiao 发表于 2020-12-28 13:44
请问如何复现此问题呢?您具体的操作步骤是怎样的呢?

是调用spread.toJSON()之后直接点字段列表没有 ...

步骤是这样的:
首先确认了 原始的SSJSON  文件里面 包含了字段绑定关系。
然后用之前你发的代码,在表格设计器里面也正确的渲染出来了。
最后直接调用spread.toJSON(),将模板保存。
这个时候我去看了下保存的json 文件,里面就丢失了designerBindingPathSchema 的信息。

我本地的模板设计器是 13的,先在线上的是14的,不知道是不是和这个有关。
image.png476872252.png

image.png870630493.png

回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2020-12-28 14:26:19
10#
dengxpeng 发表于 2020-12-28 13:50
步骤是这样的:
首先确认了 原始的SSJSON  文件里面 包含了字段绑定关系。
然后用之前你发的代码,在表 ...

直接调用spread.toJSON()是不会保存designerBindingPathSchema

您需要用designer.getData("updatedTreeNode")获取这块Schema

然后再
  1. designer.setData("treeNodeFromJson", JSON.stringify(json.designerBindingPathSchema));
  2.                     designer.setData("oldTreeNodeFromJson", JSON.stringify(json.designerBindingPathSchema));
复制代码


另外,上面我给您的代码中调用delete json.designerBindingPathSchema;将Schema删除了
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部