需求背景:数据绑定是SpreadJS中特有的能力,用于方便用户在web端快速加载和设置json结构数据。目前SpreadJS 设计器(在线表格编辑器)在导出SJS文件时,默认已经将当前文件的数据绑定模版树结构保存下来了。但是如果开发人员使用代码做sjs文件导出时,并不会直接包含绑定树结构.。这个是因为很多用户绑定树结构是和文件模版分开存储的,也就是说,多个文件可以共用一个绑定树,这样分开设计其实是给开发人员提供了便利性。
而随之带来的问题就是,存在一些开发人员,仍然希望将文件模版和绑定树结构存储在一起,,因此希望能在导出时同时包含绑定树结构。本文会介绍如何在用代码导入导出sjs文件时携带绑定树结构,注意我使用的产品是V18,不同版本可能字段结构略有差异,后续我们可以根据实际版本做一个测试即可。
解决方法:
1. 导出SJS文件时包含绑定树结构
- spread.save((blob) => {
- saveAs(blob, "test.sjs")
- },() => {},{
- fileType: GC.Spread.Sheets.FileType.sjs,
- customData:{
- designerBindingPathSchema:JSON.parse(designer.getData('treeNodeFromJson') || designer.getData('updatedTreeNode') || designer.getData('oldTreeNodeFromJson'))
- }
- })
复制代码 如上所示,只需要将对应结构打在customData中即可。
2. 导入sjs文件时,展示绑定树结构
- spread.open(blob,(fileJson) => {
- let bindData =JSON.stringify(fileJson.customData.designerBindingPathSchema)
- if(bindData){
- designer.setData("treeNodeFromJson",bindData)
- designer.setData("oldTreeNodeFromJson",bindData)
- }
- })
复制代码
|
|