找回密码
 立即注册

QQ登录

只需一步,快速开始

ygeam

注册会员

4

主题

14

帖子

98

积分

注册会员

积分
98

微信认证勋章

最新发帖
ygeam
注册会员   /  发表于:2018-11-20 18:23  /   查看:4793  /  回复:12
表格绑定数据源,活动页签和非活动页签同时绑定同一个表格,活动页签绑定正常,非活动页签绑定不上

12 个回复

倒序浏览
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2018-11-21 09:56:57
沙发
您好,您是怎么操作的?请提供一个重现问题的Demo。
回复 使用道具 举报
ygeam
注册会员   /  发表于:2018-11-21 10:17:11
板凳
KevinChen 发表于 2018-11-21 09:56
您好,您是怎么操作的?请提供一个重现问题的Demo。

1、通过设计器绘制两个页签的报表,
2、通过数据绑定的方式绑定数据,
3、两个页签都绑定了同一个表格数据源,
4、设置其中一个页签为当前活动页签,
5、页面展示发现只有活动页签的表格有数据,另外一个没有绑上数据
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2018-11-21 11:37:59
地板
你好,猜测你应该是另一个表没有设置绑定列映射,我上传一个Demo,你参考一下。

DataBinding_ygeam.html

4.3 KB, 下载次数: 89

回复 使用道具 举报
ygeam
注册会员   /  发表于:2018-11-21 11:59:47
5#
KevinChen 发表于 2018-11-21 11:37
你好,猜测你应该是另一个表没有设置绑定列映射,我上传一个Demo,你参考一下。
  1. /**
  2. * 将数据源设置给报表
  3. */
  4. setSpreadSource:function(option,callback){
  5.         var self = this;
  6.         var count = self.spread.getSheetCount();
  7.         for(var i=0;i<count;i++){
  8.                 var sheet = self.spread.getSheet(i);
  9.                 sheet.suspendPaint();
  10.                 //传入数据源
  11.                 if (typeof(this.option.data) === "object") {
  12.                         var source = new GC.Spread.Sheets.Bindings.CellBindingSource(source);
  13.                         sheet.setDataSource(source);
  14.                         callback();
  15.                 }else{
  16.                         //远程调用数据源
  17.                         this.getDataSource(option,function(data){
  18.                                 var source = new GC.Spread.Sheets.Bindings.CellBindingSource(data);
  19.                                 sheet.setDataSource(source);
  20.                                 callback();
  21.                         });
  22.                 }
  23.                 sheet.resumePaint();
  24.         }
  25. },
复制代码

这是问题代码,现在通过切换页签事件处理了一下
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2018-11-21 14:07:57
6#
这没问题,切换标签页事件来处理也是一种很巧妙的办法,

在页与页之间没有数据依赖的时候,这样做还能节省性能。
回复 使用道具 举报
ygeam
注册会员   /  发表于:2018-11-21 14:35:56
7#
KevinChen 发表于 2018-11-21 14:07
这没问题,切换标签页事件来处理也是一种很巧妙的办法,

在页与页之间没有数据依赖的时候,这样做还能节 ...

上面的代码只有是活动页签,表格才可以绑定到数据源,非活动页签绑不上
所以,您的意思是直接用页签切换事件再次绑定来进行处理吗
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2018-11-21 15:21:53
8#
您好,我的意思是可以采用这种方式,但是前提是多个sheet之间没有数据依赖,

那么回到您目前的需求上,看上边代码,可知您目前的思路是,

从后台拿到数据,然后多个sheet一起完成数据绑定。

这样也是可以的,但是您代码中的问题在于,您使用了CellBindingSource这个类,

CellBindingSource指的是单元格绑定,那么就需要您调用sheet.setBindingPath();

来指定绑定数据字段对应的单元格,直接调用sheet.setDataSource来绑定CellBindingSource

这种操作是不对的,无法完成绑定操作,建议您把学习指南上的Demo再研究一下。

image.png452823180.png

请对比一下这两种绑定方式的区别,以及具体每种方式的用法:

学习指南单元格绑定:https://demo.grapecity.com.cn/Sp ... os/cellLevelBinding

学习指南表单绑定:https://demo.grapecity.com.cn/Sp ... s/sheetLevelBinding
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2018-11-21 15:23:56
9#
如果您还有疑惑,可以给我提供一个纯前端的,能够复现问题的Demo,注意一定要包括您从后台拿到的数据,

我这边可以帮您排查问题,实现一下您的需求。
回复 使用道具 举报
ygeam
注册会员   /  发表于:2018-11-21 16:23:22
10#
KevinChen 发表于 2018-11-21 15:23
如果您还有疑惑,可以给我提供一个纯前端的,能够复现问题的Demo,注意一定要包括您从后台拿到的数据,

...

spreadjs.rar (1.25 MB, 下载次数: 77)
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部