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

QQ登录

只需一步,快速开始

eyAndrew

金牌服务用户

82

主题

378

帖子

1088

积分

金牌服务用户

积分
1088
eyAndrew
金牌服务用户   /  发表于:2025-3-18 14:30  /   查看:214  /  回复:11
本帖最后由 Wilson.Zhang 于 2025-3-28 11:49 编辑


产品:SpreadJS
版本:18.0.5
调研编号:SJS-28696
Last Review:2025-03-28
当前进展:非功能问题,已同步了特性原理。

image.png781111144.png

基于上一个帖子 确认 sheet.tables.addFromDataSource() 的table 会和dataManager的tables关联,可以触发自动更新。
image.png472914428.png
image.png114776610.png

11 个回复

倒序浏览
Matthew.Xue
超级版主   /  发表于:2025-3-18 15:06:09
沙发
本帖最后由 Matthew.Xue 于 2025-3-18 15:27 编辑

您好,我自己测试了一下, 会触发自动更新的接口,但我的做法和您稍有不同,我没有在fetch的回调中去添加数据源的结果,而是直接将数据源的名称添加进去了:
  1. spread.dataManager().tables.sales.fetch().then(res => {
  2.     sheet.tables.addFromDataSource("table2", 1, 1, "sales", new GC.Spread.Sheets.Tables.TableTheme())
  3. })
复制代码

其中table2是表格的名称,sales是数据源的名称。
自动更新、更新的api,都属于数据源的功能,而您实际上是仅仅将数据源的数据传入了表格(相当于请求了一个接口而已),而没有将数据源本身传入表格。
image.png413003234.png
您的做法和红框的做法本质上是一样的,而您需要做的是传入蓝框的内容,string代表数据源的名称,Table代表数据源本身。
您可以修改一下写法试试。


回复 使用道具 举报
eyAndrew
金牌服务用户   /  发表于:2025-3-18 15:36:49
板凳
哦哦,改成数据源名称, 确实是可以的,必须指向同一个数据源的名称,才能关联成功。
image.png674249877.png
回复 使用道具 举报
Matthew.Xue
超级版主   /  发表于:2025-3-18 16:42:34
地板
eyAndrew 发表于 2025-3-18 15:36
哦哦,改成数据源名称, 确实是可以的,必须指向同一个数据源的名称,才能关联成功。

您好,关于这个列的增删改查的触发,我还需要确认一下,请您耐心等待~
回复 使用道具 举报
Matthew.Xue
超级版主   /  发表于:2025-3-19 14:55:12
5#
本帖最后由 Matthew.Xue 于 2025-3-19 14:56 编辑
eyAndrew 发表于 2025-3-18 15:36
哦哦,改成数据源名称, 确实是可以的,必须指向同一个数据源的名称,才能关联成功。

您好,对列的增删改查目前只在集算表中支持,sheet中的table暂不支持。实际上我们对于列的增删改查也没有任何的限制,这是你们业务上的逻辑,对于srpeadjs和设计器来说,那个url只用于向后端同步列的修改,具体使用场景如下:用户在集算表中添加/修改/删除了某一列,designer就会通过调用配置的接口,帮用户将列的修改内容同步到后端,请求参数中传入的是designer自己定义的一套数据结构,这其实和集算表的设计是息息相关的:
image.png803740234.png



所以如果您有这方面的需求,可以对自行实现这块的功能,通过对表格列变化的监听,来调用不同的接口,比如删除了一列,就调用deleteColumn的接口,添加了一列就调用createColumn接口。参数的接口也不必拘泥于上图中的数据结构,完全可以自行定义。


回复 使用道具 举报
eyAndrew
金牌服务用户   /  发表于:2025-3-20 16:46:03
6#
好的,明白了, 再请教个问题。
image.png782198791.png
如图:我设置的数据源,返回了三列。

image.png741472472.png
然后我再addFromDataSource时,返回了两列数据,这个时候还能建立连接,修改触发接口自动更新么? 需求是,我们配置的数据源可能是个大宽表数据,实际上到table上,是清洗后的数据。

回复 使用道具 举报
Matthew.Xue
超级版主   /  发表于:2025-3-20 18:02:14
7#
eyAndrew 发表于 2025-3-20 16:46
好的,明白了, 再请教个问题。

如图:我设置的数据源,返回了三列。

不太理解,您讲的数据清洗是如何实现的?是在前端还是后端?
如果是在前端实现的,那也就是要重写数据源的remote读取逻辑,或者增加计算列,或者说你们要让用户自己清洗,那就要对应的写ui界面和用户配置的js逻辑。
如果在后端实现,那就和前端关系不大了,主需要调用数据源的fetch(true),数据就自动更新了。
回复 使用道具 举报
eyAndrew
金牌服务用户   /  发表于:2025-3-20 18:11:57
8#
Matthew.Xue 发表于 2025-3-20 18:02
不太理解,您讲的数据清洗是如何实现的?是在前端还是后端?
如果是在前端实现的,那也就是要重写数据源 ...

结合我的上面的图片:
数据源配置的读取接口,返回了3列, 然后fetch的时候,我会先重写数据源配置(把read 改成自定义函数 传入我们需要的参数), 后端返回了2列数据, 然后上到table上,这个时候table数据发生修改, 还能自动触发数据源配置的更新接口么? (已经开启了自动同步 )
简单的来说就是 数据源配置的列, 和table的实际列不一致,还能正常处理么?
回复 使用道具 举报
Matthew.Xue
超级版主   /  发表于:2025-3-21 09:43:25
9#
eyAndrew 发表于 2025-3-20 18:11
结合我的上面的图片:
数据源配置的读取接口,返回了3列, 然后fetch的时候,我会先重写数据源配置(把r ...

举个例子,一开始在页面上配置后,返回了3列,比方说是A/B/C三个字段,您重写数据源配置后,后端返回了两列,字段名分别为D/E,此时在页面上显示的也是D和E两列,用户修改后,会触发update接口的调用,但是接口中传入的是对D和E的修改,而不是对A/B/C的修改,因为此时数据源字段已经没有ABC了。
在您说的这种情况下,数据源的列一定和Table的列是一致的,只是一开始数据源的列是ABC,重写后变成了DE,不存在您说的二者不一致的情况。
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2025-3-28 11:50:05
10#
您好!由于您较长时间未回复,请教下您在本贴中所提问题是否还存有疑问?
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部