找回密码
 立即注册

QQ登录

只需一步,快速开始

ypge

注册会员

13

主题

64

帖子

195

积分

注册会员

积分
195
ypge
注册会员   /  发表于:2024-7-29 16:06  /   查看:865  /  回复:8
在线模式编辑器,修改了数据源地址,怎么代码直接触发加载数据(请求新的接口的)

8 个回复

倒序浏览
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-7-29 17:46:30
沙发
  1. Object.values(spread.dataManager().tables).forEach(function (table) {
  2.                             table.fetch(true).then(function (data) {
  3.                                 // 强制拉取新的数据
  4.                                 spread.suspendPaint();
  5.                                 spread.getActiveSheetOrSheetTab().refresh(); // 强制刷新页面
  6.                                 spread.resumePaint();
  7.                             });
  8.                         });
复制代码

自定义菜单-数据源刷新.html

4.61 KB, 下载次数: 89

回复 使用道具 举报
ypge
注册会员   /  发表于:2024-7-30 08:47:09
板凳
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-7-30 09:17:45
地板
那本帖就先结贴啦,有问题欢迎发新帖交流。
回复 使用道具 举报
ypge
注册会员   /  发表于:2024-7-30 11:14:50
5#
本帖最后由 Ellia.Duan 于 2024-7-30 15:47 编辑
Ellia.Duan 发表于 2024-7-30 09:17
那本帖就先结贴啦,有问题欢迎发新帖交流。

我刷新数据了,然后获取json数据时,里面的数据没有刷新:
  1. sheetTab.renderMode("PaginatedPreview");
  2. let temportSpread = new GC.Spread.Sheets.Workbook();
  3.         let name = sheetTab.name();
  4.         let pageSheet = sheetTab.generatePageSheets(
  5.           false,
  6.           (i) => `${name}-${i}`
  7.         );
  8.         let len = pageSheet.length;
  9.         temportSpread.setSheetCount(1);
  10.         for (let i = 0; i < len; i++) {
  11.           temportSpread.addSheet(i, pageSheet);
  12.         }
  13.         temportSpread.removeSheet(temportSpread.getSheetCount() - 1);
  14.         jsonStr = temportSpread.toJSON();
复制代码


最后jsonStr里面的数据没有新请求的数据,但是页面是有显示新数据的

回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-7-30 15:50:28
6#
您好,与您确认下,在报表预览时,数据源进行了修改,执行楼上给您的fetch方法后,可以更新数据,此时报表显示正常。
但是再其导出为普通sheet时,进行toJSON后,发现数据没有更新?
回复 使用道具 举报
ypge
注册会员   /  发表于:2024-7-30 16:32:07
7#
Ellia.Duan 发表于 2024-7-30 15:50
您好,与您确认下,在报表预览时,数据源进行了修改,执行楼上给您的fetch方法后,可以更新数据,此时报表 ...

是的,延时300毫秒再toJSON能拿到数据
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-7-30 18:11:10
8#
您好,我需要调研下此问题,有进展会及时联系您。
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-8-1 10:33:35
9#
您好,按照上述步骤未能复现您的问题,整个过程如下:
toJSON.gif

修改数据源后,执行
  1. Object.values(spread.dataManager().tables).forEach(function (table) {
  2.                             table.fetch(true).then(function (data) {
  3.                                 // 强制拉取新的数据
  4.                                 spread.suspendPaint();
  5.                                 spread.getActiveSheetOrSheetTab().refresh(); // 强制刷新页面
  6.                                 spread.resumePaint();
  7.                             });
  8.                         });
复制代码
等数据刷新后,执行下面的代码
  1. let sheetTab = spread.getActiveSheetTab()
  2. sheetTab.renderMode("PaginatedPreview");
  3. let temportSpread = new GC.Spread.Sheets.Workbook();
  4.         let name = sheetTab.name();
  5.         let pageSheet = sheetTab.generatePageSheets(
  6.           false,
  7.           (i) => `${name}-${i}`
  8.         );
  9.         let len = pageSheet.length;
  10.         temportSpread.setSheetCount(1);
  11.         for (let i = 0; i < len; i++) {
  12.           temportSpread.addSheet(i, pageSheet[i]);
  13.         }
  14.         temportSpread.removeSheet(temportSpread.getSheetCount() - 1);
  15.         jsonStr = temportSpread.toJSON();
复制代码
查看jsonStr 已经是更新后的数据了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部