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

QQ登录

只需一步,快速开始

Winny

超级版主

135

主题

252

帖子

1589

积分

超级版主

Rank: 8Rank: 8

积分
1589
Winny
超级版主   /  发表于:2021-10-20 17:36  /   查看:2615  /  回复:0
本帖最后由 Winny 于 2021-10-20 17:40 编辑

用户在使用SpreadJS设计模板时,其中模板中间区域可能会存在一个表格数据绑定,如下所示:
image.png187981261.png

当绑定好数据源之后,有可能数据源的记录数远远多于现在展示的表的行数,可能会出现如下展示效果:
image.png684159545.png

为解决上述问题,可以使用表格的expandBoundRows()方法,该方法用来设置或获取表格绑定时是否扩展行信息。
如果改方法传参为true,则表格记录增加时会对应的增加行。
具体代码为:
  1. let sheet = spread.getSheetFromName('Sheet2')
  2. let table1 = sheet.tables.findByName('gcTable0')
  3. table1.expandBoundRows(true)
复制代码
有用户不知道自己在使用设计器进行表格绑定时,生成的表格名称时什么,可以在设计器中点击表格,左上方就会出现表格的名称,如下所示:
image.png34260558.png
这里建议用户自行更改表格名称,注意,表名称不能重复。
设置完成扩展行之后,显示效果如下:
image.png234417723.png
细心的同学会看到,虽然表格不再影响下方数据了,但扩展行上其它区域对应的样式并没有正常显示,此时,我们可以使用copyTo方法来将其它区域的样式、公式、合并信息等复制下来,这里以复制样式为例,具体代码如下:

  1. function copyTableStyle(sheet,table){
  2.         let range = table.dataRange()
  3.         console.log(range)
  4.         let startCol = table.expandBoundRows() ? -1 : range.col
  5.         let colCount = table.expandBoundRows() ? -1 : range.colCount
  6.         let tableCols = isTableArea(range)
  7.         for(let i=0; i<range.rowCount-1;i++){
  8.             for(let j=0; j<sheet.getColumnCount();j++){
  9.                 //判断是否在表格内
  10.                 if(tableCols.indexOf(j) == -1){
  11.                     sheet.copyTo(range.row+i,j,range.row+i+1,j,1,1,GC.Spread.Sheets.CopyToOptions.style)
  12.                 }
  13.             }
  14.         }
  15.       }

  16.       function isTableArea(range){
  17.           //生成表格列范围数组
  18.         let cols = []
  19.         for(let i=0; i<range.colCount;i++){
  20.             cols.push(range.col+i)
  21.         }
  22.         return cols
  23.       }
复制代码
设置完成后,显示如图:
image.png860962524.png
此时显示已经正常了,如果有用户同时想拷贝其它元素,可以浏览copyTo方法的APIs说明文档,参考:
https://demo.grapecity.com.cn/sp ... rksheet.html#copyTo
https://demo.grapecity.com.cn/sp ... html#.CopyToOptions

如果复制逻辑相同,copyTo方法最后一个参数不同拷贝项之间可以用‘|’分隔,如果复制逻辑不同,那针对不同的复制项,重新写copyTo方法即可。

测试工程见附件。




数据绑定.zip

4.15 KB, 下载次数: 74

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部