SpreadJS表格绑定时纵向扩展
本帖最后由 Winny 于 2021-10-20 17:40 编辑用户在使用SpreadJS设计模板时,其中模板中间区域可能会存在一个表格数据绑定,如下所示:
当绑定好数据源之后,有可能数据源的记录数远远多于现在展示的表的行数,可能会出现如下展示效果:
为解决上述问题,可以使用表格的expandBoundRows()方法,该方法用来设置或获取表格绑定时是否扩展行信息。
如果改方法传参为true,则表格记录增加时会对应的增加行。
具体代码为:let sheet = spread.getSheetFromName('Sheet2')
let table1 = sheet.tables.findByName('gcTable0')
table1.expandBoundRows(true)有用户不知道自己在使用设计器进行表格绑定时,生成的表格名称时什么,可以在设计器中点击表格,左上方就会出现表格的名称,如下所示:
这里建议用户自行更改表格名称,注意,表名称不能重复。
设置完成扩展行之后,显示效果如下:
细心的同学会看到,虽然表格不再影响下方数据了,但扩展行上其它区域对应的样式并没有正常显示,此时,我们可以使用copyTo方法来将其它区域的样式、公式、合并信息等复制下来,这里以复制样式为例,具体代码如下:
function copyTableStyle(sheet,table){
let range = table.dataRange()
console.log(range)
let startCol = table.expandBoundRows() ? -1 : range.col
let colCount = table.expandBoundRows() ? -1 : range.colCount
let tableCols = isTableArea(range)
for(let i=0; i<range.rowCount-1;i++){
for(let j=0; j<sheet.getColumnCount();j++){
//判断是否在表格内
if(tableCols.indexOf(j) == -1){
sheet.copyTo(range.row+i,j,range.row+i+1,j,1,1,GC.Spread.Sheets.CopyToOptions.style)
}
}
}
}
function isTableArea(range){
//生成表格列范围数组
let cols = []
for(let i=0; i<range.colCount;i++){
cols.push(range.col+i)
}
return cols
}
设置完成后,显示如图:
此时显示已经正常了,如果有用户同时想拷贝其它元素,可以浏览copyTo方法的APIs说明文档,参考:
https://demo.grapecity.com.cn/sp ... rksheet.html#copyTo,
https://demo.grapecity.com.cn/sp ... html#.CopyToOptions
如果复制逻辑相同,copyTo方法最后一个参数不同拷贝项之间可以用‘|’分隔,如果复制逻辑不同,那针对不同的复制项,重新写copyTo方法即可。
测试工程见附件。
页:
[1]