找回密码
 立即注册

QQ登录

只需一步,快速开始

chaiwei

注册会员

9

主题

21

帖子

78

积分

注册会员

积分
78
chaiwei
注册会员   /  发表于:2021-11-5 14:39  /   查看:2264  /  回复:4
1金币
重现步骤:
1. 打开官网示例 https://demo.grapecity.com.cn/SpreadJS/WebDesigner/index.html
2. 导入excel文件,见附件
3. 执行以下代码转换为数据源
  1. (function() {
  2.     const spread = GC.Spread.Sheets.findControl(document.getElementsByClassName('ss'));
  3.     const sheet = spread.getActiveSheet();
  4.     const rowCount = sheet.getRowCount();

  5.     const templateDefine = {
  6.         // 运价
  7.         dataRowStartIndex: 2,
  8.         columns: [
  9.             'svc',
  10.             'trade',
  11.             'feederPol',
  12.             'pol',
  13.             'pod',
  14.             'carrier',
  15.             'bookingAgent',
  16.             'accountUnit',
  17.             'f_20gpCost',
  18.             'f_40gpCost',
  19.             'f_40hcCost',
  20.             'f_45hcCost',
  21.             'f_20norCost',
  22.             'f_40norCost',
  23.             'f_20gpHandlingFeeCarrier',
  24.             'f_40gpHandlingFeeCarrier',
  25.             'f_40hcHandlingFeeCarrier',
  26.             'f_45hcHandlingFeeCarrier',
  27.             'f_20norHandlingFeeCarrier',
  28.             'f_40norHandlingFeeCarrier',
  29.             'f_20gpHandlingFeeDivision',
  30.             'f_40gpHandlingFeeDivision',
  31.             'f_40hcHandlingFeeDivision',
  32.             'f_45hcHandlingFeeDivision',
  33.             'f_20norHandlingFeeDivision',
  34.             'f_40norHandlingFeeDivision',
  35.             'additionalCodeCarrie',
  36.             'additionalCodeDivision',
  37.             'cls',
  38.             'etd',
  39.             'begtime',
  40.             'endtime',
  41.             'via',
  42.             'colorcode',
  43.             'tstype',
  44.             'tT',
  45.             'sub',
  46.             'remark',
  47.             'webRemark',
  48.             'f_20gpT3',
  49.             'f_40gpT3',
  50.             'f_40hcT3',
  51.             'f_45hcT3',
  52.             'f_20norT3',
  53.             'f_40norT3',
  54.             'pricingCode',
  55.             'branchName',
  56.             'cnyRate',
  57.             'payment',
  58.             'forFeeder',
  59.             'f_20gpBase',
  60.             'f_40gpBase',
  61.             'f_40hcBase',
  62.             'f_45hcBase',
  63.             'f_20norBase',
  64.             'f_40norBase',
  65.             'priceAuthority',
  66.             'contractNo',
  67.             'custumerAuthority'
  68.         ]
  69.     };
  70.     let table = sheet.tables.add('SofreightTable',
  71.         templateDefine.dataRowStartIndex - 1, 0, rowCount - templateDefine.dataRowStartIndex + 1, templateDefine.columns.length);
  72.     table.expandBoundRows(true);
  73.     table.allowAutoExpand(true);
  74.     table.style(null);
  75.     table.bindingPath("SofreightTable");

  76.     /**********数据绑定**************/
  77.     const tableDataRange = table.dataRange();
  78.     const dataArray = sheet.getArray(
  79.         tableDataRange.row,
  80.         tableDataRange.col,
  81.         tableDataRange.rowCount,
  82.         tableDataRange.colCount
  83.     );
  84.     const dataSource = {
  85.         SofreightTable: undefined
  86.     };
  87.     // 原始数据处理为绑定数据
  88.     dataSource.SofreightTable = dataArray.map((row) => {
  89.         const obj = {};
  90.         row.forEach((cell, index) => {
  91.             obj[templateDefine.columns[index]] = cell;
  92.         });
  93.         return obj;
  94.     });

  95.     // 执行数据绑定
  96.     sheet.setDataSource(new GC.Spread.Sheets.Bindings.CellBindingSource(dataSource));
  97. })();
复制代码
执行后,拖动右侧的滚动条,滚动条无反应,控制台报错,并且滚动中会出现白屏。
image.png695821532.png
image.png16797789.png

sofreight地东黑海.xlsx

1.45 MB, 下载次数: 191

最佳答案

查看完整内容

这边测试可能是在原数据基础上绑定的数据源造成此错误。 尝试新建一个sheet,绑定数据源,不会出现报错问题, 您参考附件所示的demo,实际测试下。 测试步骤: 1、导入前面提供的excel文件 2、点击 绑定数据源 按钮

4 个回复

倒序浏览
最佳答案
最佳答案
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-11-5 14:39:05
来自 5#
本帖最后由 Lynn.Dou 于 2021-12-1 16:26 编辑

这边测试可能是在原数据基础上绑定的数据源造成此错误。
尝试新建一个sheet,绑定数据源,不会出现报错问题,
您参考附件所示的demo,实际测试下。
测试步骤:
1、导入前面提供的excel文件
2、点击 绑定数据源 按钮

导入导出文件.zip

161.6 KB, 下载次数: 164

回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-11-5 16:17:23
2#
您好,这边根据您描述的步骤复现了此问题。
只是从代码中不太理解您是想实现什么样的需求。
数据绑定是为了实现字段之间与数据的绑定关系,从而动态绑定数据源,
从excel文件中可以看到已经表单中已经存在了数据,
您的代码是想什么需求呢?
请结合实际的业务情况详细描述下,
这样这边才能更好的调研相关解决方案。

回复 使用道具 举报
chaiwei
注册会员   /  发表于:2021-11-5 18:07:22
3#
Lynn.Dou 发表于 2021-11-5 16:17
您好,这边根据您描述的步骤复现了此问题。
只是从代码中不太理解您是想实现什么样的需求。
数据绑定是为 ...

我们这个excel是用户编辑保存时,将其中的数据发送到后台,后台对数据进行解析并存入数据库。
用户保存 -> JS将纯数据JSON(不包括模板)发送到后端 -> 后端入库。
我们之前对接SJS的时候,对接的销售推荐我们用这种方式的。
如果不使用这种数据源方式,应该可以使用sheet.getArray来实现同样的效果。
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-11-5 18:25:16
4#
好的,这边先调研下,有问题会在贴中与您沟通。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部