找回密码
 立即注册

QQ登录

只需一步,快速开始

Universail
金牌服务用户   /  发表于:2024-3-17 20:11  /   查看:850  /  回复:14
本帖最后由 Richard.Huang 于 2024-4-3 17:02 编辑



产品:SpreadJS
版本:V17.0.4



image.png143961791.png

1.问题1:get请求提供的url地址,没法携带动态token字符串。每个用户登录后,会获得token,前端每次向后端请求,都需要携带token,目前这种配置方式是没法使用token,导致无法请求到后端数据。
2.问题2:后端返回的数据,是有结构的,不可能只是纯数据。比如:
{
    "code": -1,
    "message": "token signature is invalid: crypto/rsa: verification error",
    "content": {data:.....},
    "timestamp": 1710677253852
}

数据会存储在content中的data,这种情况下,是无法直接满足报表插件需要的数据结构的
3.配置两个表以后,如果把两个表的字段拉进同一个表格中,几乎都会卡死或者奔溃,https://demo.grapecity.com.cn/spreadjs/v17.0-reportsheet/  这个预览demo中可以复现: image.png658448791.png

这时候预览,就直接卡死了

14 个回复

倒序浏览
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-3-18 10:27:05
沙发
本帖最后由 Ellia.Duan 于 2024-3-18 10:51 编辑

问题一、建议您使用CRUD函数,


  1.    let spread = designer.getWorkbook()
  2.         var dataManager = spread.dataManager();
  3.         var myTable = dataManager.addTable("myTable", {
  4.             remote: {
  5.                 read: function () {
  6.                     return promise1(1)
  7.                 }

  8.             }
  9.         });
复制代码
  1.   const promise1 = function (userId) {
  2.         return new Promise((resolve, reject) => {
  3.             $.ajax(
  4.                 {
  5.                     headers: {Authorization: userId,},
  6.                     async: false,
  7.                     url: "http://127.0.0.1:3000/studentList", success: function (result) {
  8.                         resolve(result);
  9.                     }
  10.                 });
  11.         });
  12.     }
复制代码
当更新token时
  1.     let myTable = spread.dataManager().tables["myTable"];
  2.             myTable.options = {
  3.                 remote: {
  4.                     read: function () {
  5.                         return promise1(2);
  6.                     }
  7.                 }
  8.             };
  9.             myTable.fetch(true).then(function () {

  10.             });
  11.         })
复制代码

目前动态token 只能通过代码方式去修改。
整个过程如下动图二所示:


问题二、
可以配置访问路径,如下图中的旅游表,其表结构是

image.png900359496.png
image.png945436401.png
所以配置了数据路径是data

问题三,如下动图所示,按照您的流程测试了下,没有复现此问题



id.gif
2.gif

数据更新.html

4.18 KB, 下载次数: 33

回复 使用道具 举报
Universail
金牌服务用户   /  发表于:2024-3-19 17:13:27
板凳
image.png280159301.png

问题3:我在safari和Chrome俩个浏览器都尝试上上图的跨表字段混搭,进入预览都会卡死


问题1:使用addTable的方式倒是可以,那么用户通过配置界面添加的表信息是否可以获取?这样我只需要获取之后,使用代码完成token注入就可以了
回复 使用道具 举报
Universail
金牌服务用户   /  发表于:2024-3-19 17:17:37
地板
问题2:我们后端返回结构都是嵌套的,如下图,数据其实在content.data里,那么路径里填写content.data就可以了吗?

{
"code": 0,
"message": "string",
"content": {
     data:[....]
},

"timestamp": 0
}
回复 使用道具 举报
Universail
金牌服务用户   /  发表于:2024-3-19 17:21:36
5#
本帖最后由 Universail 于 2024-3-19 17:48 编辑

问题1补充:

let myTable = spread.dataManager().tables["myTable"];

上述方式是否可以获取通过配置界面(不是通过代码)添加的表信息?

回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-3-19 17:43:41
6#
您好,问题已收到,这边调研一下,有进展第一时间给您回复。
SpreadJS 17.0.8 | GcExcel 7.1.0 已发布~
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-3-20 09:31:11
7#
问题一、如果是通过UI方式添加的表,需要通过如下方式获取
  1. spread.dataManager().tables
复制代码
image.png38671568.png
观察上图,返回tableList ,去遍历,找到要更新的table名称,然后执行
  1. myTable.options = {
  2.                 remote: {
  3.                     read: function () {
  4.                         return promise1(2);
  5.                     }
  6.                 },

  7.             };
  8.             myTable.fetch(true).then(function () {
  9.                 let myView = myTable.views["myView"];
  10.                 let sheet = spread.getActiveSheetTab();
  11.                 sheet.setDataView(myView);
  12.             });
复制代码


问题二:
路径可以嵌套,如下图所示
image.png537508544.png
接口返回的数据是content.data ,
可以用代码方式定义,在schema属性的dataPath中,也可以通过UI方式定义
image.png889573669.png


问题三、找了很多台电脑也没有复现您的问题,所以需要您完整的复现问题的视频,操作系统,浏览器版本等信息。
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-3-21 16:59:04
8#
您好,请问您的问题是否已解决,如果未解决,可以追帖交流。
回复 使用道具 举报
Universail
金牌服务用户   /  发表于:2024-3-22 07:23:34
9#
等我验证以后再回复这个帖子告知结果。
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-3-22 14:30:35
10#
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部