找回密码
 立即注册

QQ登录

只需一步,快速开始

Universail
金牌服务用户   /  发表于:2024-3-17 20:11  /   查看:1038  /  回复: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 个回复

正序浏览
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2024-4-11 16:51:27
15#
您好,由于您长时间未回帖,本贴就先作结帖处理了,后续如果有其他新的问题,欢迎继续发新帖询问
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-4-1 14:23:49
14#
您好,如果不使用function的方式,您也可以通过options的方式修改header中Authorization的值,如下代码:
  1.        var myTable = dataManager.addTable("myTable", {
  2.             remote: {
  3.                 read: {
  4.                     url: "http://127.0.0.1:3000/studentList",
  5.                     headers: {
  6.                         "Authorization": 1,
  7.                     },
  8.                 }
  9.             }
  10.         });
复制代码
关于获取不到tables的问题,您可以尝试导入成功后,再进行获取。
关于集算表更新,您可以参考下面的代码:
  1. myTable.fetch(true).then(function () {
  2.                 let myView = myTable.views["myView"];
  3.                 let sheet = spread.getActiveSheetTab();
  4.                 sheet.setDataView(myView);
  5.             });
复制代码


回复 使用道具 举报
Universail
金牌服务用户   /  发表于:2024-4-1 10:45:55
13#
Ellia.Duan 发表于 2024-3-18 10:27
问题一、建议您使用CRUD函数,


remote.read如果使用函数,则会导致UI无法编辑,这个不是我想要的
回复 使用道具 举报
Universail
金牌服务用户   /  发表于:2024-3-30 22:22:04
12#
Ellia.Duan 发表于 2024-3-20 09:31
问题一、如果是通过UI方式添加的表,需要通过如下方式获取

观察上图,返回tableList ,去遍历,找到要更 ...

另外,还有个拦截时机的问题:

我在onDesignerInitialized事件中尝试获取:
const workBook = this.designer.getWorkbook() as GC.Spread.Sheets.Workbook;
console.log(workBook.dataManager().tables);

发现得到的是空对象
回复 使用道具 举报
Universail
金牌服务用户   /  发表于:2024-3-30 21:41:31
11#
Ellia.Duan 发表于 2024-3-20 09:31
问题一、如果是通过UI方式添加的表,需要通过如下方式获取

观察上图,返回tableList ,去遍历,找到要更 ...

这样只能获取到表清单吧:spread.dataManager().tables

其实,获取通过UI方式添加的数据表,根本目的是为了在向后端发起get请求的时候,能拦截并添加请求头(token),否则后台会报错token非法
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-3-22 14:30:35
10#
回复 使用道具 举报
Universail
金牌服务用户   /  发表于:2024-3-22 07:23:34
9#
等我验证以后再回复这个帖子告知结果。
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-3-21 16:59:04
8#
您好,请问您的问题是否已解决,如果未解决,可以追帖交流。
回复 使用道具 举报
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


问题三、找了很多台电脑也没有复现您的问题,所以需要您完整的复现问题的视频,操作系统,浏览器版本等信息。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部