请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

Winny

超级版主

150

主题

275

帖子

1813

积分

超级版主

Rank: 8Rank: 8

积分
1813
Winny
超级版主   /  发表于:2025-3-27 12:18  /   查看:88  /  回复:0
需求背景:数据绑定是SpreadJS中特有的能力,用于方便用户在web端快速加载和设置json结构数据。目前SpreadJS 设计器(在线表格编辑器)在导出SJS文件时,默认已经将当前文件的数据绑定模版树结构保存下来了。但是如果开发人员使用代码做sjs文件导出时,并不会直接包含绑定树结构.。这个是因为很多用户绑定树结构是和文件模版分开存储的,也就是说,多个文件可以共用一个绑定树,这样分开设计其实是给开发人员提供了便利性。
而随之带来的问题就是,存在一些开发人员,仍然希望将文件模版和绑定树结构存储在一起,,因此希望能在导出时同时包含绑定树结构。本文会介绍如何在用代码导入导出sjs文件时携带绑定树结构,注意我使用的产品是V18,不同版本可能字段结构略有差异,后续我们可以根据实际版本做一个测试即可。


解决方法:
1. 导出SJS文件时包含绑定树结构
  1. spread.save((blob) => {
  2.                     saveAs(blob, "test.sjs")
  3.                 },() => {},{
  4.                     fileType: GC.Spread.Sheets.FileType.sjs,
  5.                     customData:{
  6.                         designerBindingPathSchema:JSON.parse(designer.getData('treeNodeFromJson') || designer.getData('updatedTreeNode') || designer.getData('oldTreeNodeFromJson'))
  7.                     }   
  8.                 })
复制代码
如上所示,只需要将对应结构打在customData中即可。

2. 导入sjs文件时,展示绑定树结构
  1. spread.open(blob,(fileJson) => {
  2.                     let bindData =JSON.stringify(fileJson.customData.designerBindingPathSchema)
  3.                     if(bindData){
  4.                       designer.setData("treeNodeFromJson",bindData)
  5.                       designer.setData("oldTreeNodeFromJson",bindData)
  6.                     }
  7.                 })
复制代码





0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部