找回密码
 立即注册

QQ登录

只需一步,快速开始

ctf123

注册会员

6

主题

21

帖子

59

积分

注册会员

积分
59
ctf123
注册会员   /  发表于:2021-7-14 15:50  /   查看:4575  /  回复:18
本帖最后由 ctf123 于 2021-7-22 14:09 编辑

                        table.bindColumns(tableColumns);
                          table.bindingPath('ragins2');
                           table.style(undefined);
                           table.filterButtonVisible(false);
                          var source = new GC.Spread.Sheets.Bindings.CellBindingSource(data);
                          sheet.setDataSource(source);
                          sheet.defaults.colWidth = 70;
                          sheet.setColumnWidth(0, 200); //设置单元格宽度

data数据会根据条件改变,但是table显示却没有显示最新的data数据,只有第一次有效果, sheet.repaint();也无效

23.rar

2.1 KB, 下载次数: 139

18 个回复

倒序浏览
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-7-14 15:57:50
沙发
本帖最后由 Clark.Pan 于 2021-8-2 14:33 编辑

数据变更之后您需要重新设置数据源
source = new GC.Spread.Sheets.Bindings.CellBindingSource(data);
    sheet.setDataSource(source);
————————————————————————————
该问题最新结论(2021/08/02):
在重新设置数据源的时候需要检查是否有调用创建工作簿实例的代码,如果有创建新的工作簿实例,会导致重新设置数据源的时候多出一个工作簿。这种情况下,可以考虑用destory销毁一个工作簿实例,或者调整业务逻辑。

回复 使用道具 举报
ctf123
注册会员   /  发表于:2021-7-14 16:05:26
板凳
Derrick.Jiao 发表于 2021-7-14 15:57
数据变更之后您需要重新设置数据源
source = new GC.Spread.Sheets.Bindings.CellBindingSource(data);
  ...

                        table.bindColumns(tableColumns);
                          table.bindingPath('ragins2');
                           table.style(undefined);
                           table.filterButtonVisible(false);
                          var source = new GC.Spread.Sheets.Bindings.CellBindingSource(data);
                          sheet.setDataSource(source);
                          sheet.defaults.colWidth = 70;
                          sheet.setColumnWidth(0, 200); //设置单元格宽度

已经重新设置过了,无效
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-7-14 16:11:44
地板
ctf123 发表于 2021-7-14 16:05
table.bindColumns(tableColumns);
                          table.bindingP ...

请提供一个完整的demo,这边调试一下。
回复 使用道具 举报
ctf123
注册会员   /  发表于:2021-7-14 16:26:57
5#
Derrick.Jiao 发表于 2021-7-14 16:11
请提供一个完整的demo,这边调试一下。

                      sheet=$this.spread_obj.getSheet(j);
                        var rows=result.data.jsonArrayResult[key].length+1;
                        var cloms=result.data.colNames.length;
                         var table = sheet.tables.add('raGinsSales', 1, 1,rows ,cloms );
                         //table.range();
                        var data = {};
                         data.ragins2 = result.data.jsonArrayResult[key]
                         window.data = data;
                        var names =  result.data.colNames,
                        labels = result.data.colNames,
                        tableColumns = [];
                        //console.log(names);
                        table.autoGenerateColumns(false);
                        names.forEach(function (name, index) {
                          var tableColumn = new GC.Spread.Sheets.Tables.TableColumn();
                           tableColumn.name(labels[index]);
                           tableColumn.dataField(name);
                           tableColumns.push(tableColumn);
                          });
                          table.bindColumns(tableColumns);
                          table.bindingPath('ragins2');
                          table.style(undefined);
                          table.filterButtonVisible(false);
                          var source = new GC.Spread.Sheets.Bindings.CellBindingSource(data);
                          console.log(data);
                          sheet.setDataSource(source);
                          sheet.defaults.colWidth = 70;
                          sheet.setColumnWidth(0, 200); //设置单元格宽度
                         // sheet.addSpan(sel.row, sel.col, sel.rowCount, sel.colCount);
                          sheet.addSpan(0,0, 1, cloms+1);//合并单元格
                          var range = sheet.getRange(1, 1, rows, cloms);
                          range.setBorder(new GC.Spread.Sheets.LineBorder('black',
                        GC.Spread.Sheets.LineStyle.thin), { all: true });
                          sheet.repaint();

数据啥的都是后台读取的,会根据条件去后台重新提取数据,然后重新赋值不行
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-7-14 16:42:55
6#
ctf123 发表于 2021-7-14 16:26
sheet=$this.spread_obj.getSheet(j);
                        var rows=result ...

从您给的代码这边无法复现您的问题,请在附件的demo复现您的问题并上传

features_workbook_initialization_JavaScript.zip

2.12 KB, 下载次数: 123

回复 使用道具 举报
ctf123
注册会员   /  发表于:2021-7-21 17:05:37
7#
Derrick.Jiao 发表于 2021-7-14 16:42
从您给的代码这边无法复现您的问题,请在附件的demo复现您的问题并上传

其实就是我会先 从后台重新加载excel模板数据,好像这里就没效果了,因为excel根本没有重新加载刷新、questionary_data.questionary.questionaryData = escape(
            JSON.stringify(
              $this.spread_obj.toJSON({
                //includeBindingSource: true,
                ignoreStyle: false,
                ignoreFormula: false,
                rowHeadersAsFrozenColumns: false,
                columnHeadersAsFrozenRows: false
              })
            )
          );
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-7-21 18:16:09
8#
ctf123 发表于 2021-7-21 17:05
其实就是我会先 从后台重新加载excel模板数据,好像这里就没效果了,因为excel根本没有重新加载刷新、que ...

用到数据绑定需要将这个打开才会把数据源加载进来。由目前提供的信息,这边未能复现您的问题,建议您提供对应的demo,我们定位到问题之后才能给出准确的解决方案。 image.png150185546.png
回复 使用道具 举报
ctf123
注册会员   /  发表于:2021-7-22 14:31:39
9#
Derrick.Jiao 发表于 2021-7-21 18:16
用到数据绑定需要将这个打开才会把数据源加载进来。由目前提供的信息,这边未能复现您的问题,建议您提供 ...

失误了、表格加载出来了,在原先表格的下面,加载了上下2个excel,效果就是在原来的excel下面又加载了新的excel
回复 使用道具 举报
ctf123
注册会员   /  发表于:2021-7-22 14:33:38
10#
image.png794918212.png
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部