找回密码
 立即注册

QQ登录

只需一步,快速开始

湖南大商帮

初级会员

46

主题

155

帖子

467

积分

初级会员

积分
467
湖南大商帮
初级会员   /  发表于:2021-9-2 09:45  /   查看:1967  /  回复:3
1金币
假设数据源是 ds=[{a:1},{a:2}]
我在绑定sheet.bindDataSource(ds)
之后,我再 ds.push({a:3})
sheet.refresh()也好,还是spread.invalidateLayout();sheet.recalcAll();spread.repaint();也好,sheet界面不会有任何变化,不显示我新增的数据
并不是我不用addRows来新增,而是业务需求就是这样的
我们页面上有n个tab页,每个tab里有一个workbook,假设我先切到tabC这个页,初始化的时候绑定了数据源ds,然后我再切换到tabA页,里面有代码改变了tabC页里sheet绑定的ds数据源的数据,修改,新增,删除都有可能,这个时候,我再切换到tabC页,要能在sheet里同步看到ds的最新数据,有没有好的思路可以提供一下

最佳答案

查看完整内容

通俗点讲就是,一共有6个凳子坐了6个人,凳子上的人换了,凳子无需重新摆放。但是一个人带着凳子走或者带着凳子进来,这个空间需要重新调整。因此就需要获取新的数据源重新去设置。

3 个回复

倒序浏览
最佳答案
最佳答案
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-9-2 09:45:46
来自 4#
湖南大商帮 发表于 2021-9-2 10:18
这个思路也不是不可以,但是稍显麻烦一点。。。那为什么我在tabA里代码 修改tabC的数据源个别的值,如ds[0] ...

通俗点讲就是,一共有6个凳子坐了6个人,凳子上的人换了,凳子无需重新摆放。但是一个人带着凳子走或者带着凳子进来,这个空间需要重新调整。因此就需要获取新的数据源重新去设置。
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-9-2 09:58:44
2#
您可以考虑在完成对数据源操作的时候用getDataSource获取,getDataSource拿到的就是最新的。此时再切换工作簿时,只需将拿到的最新的数据源setDataSource给工作簿设置数据源。 image.png490014647.png
回复 使用道具 举报
湖南大商帮
初级会员   /  发表于:2021-9-2 10:18:37
3#
本帖最后由 湖南大商帮 于 2021-9-2 10:22 编辑

这个思路也不是不可以,但是稍显麻烦一点。。。那为什么我在tabA里代码 修改tabC的数据源个别的值,如ds[0].name='aaa',这个时候再切到tabC,tabC里的actived事件里fefresh()一下,这个时候界面对应数据源的单元格会自动更新到修改的值,新增的值却不会自动出现在sheet里。。经过测试,用代码对绑定的数据源进行操作,修改任意数据的值,用refresh或者触发window.resize事件,界面上会跟着自动刷,但是新增数据,删除数据,界面不会有任何变化。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部