找回密码
 立即注册

QQ登录

只需一步,快速开始

gnip

高级会员

130

主题

339

帖子

1069

积分

高级会员

积分
1069

[已处理] 报表无法设置tag

gnip
高级会员   /  发表于:2024-9-4 19:02  /   查看:497  /  回复:8
本帖最后由 gnip 于 2024-9-4 19:16 编辑

如图所示,我给每个模板单元格设置tag,因为tag相当于单元格的一个配置字段,可以给用户存很多除开文本以外的数据类型,这样的话大大提高了自定义配置的灵活性, image.png47251891.png ,但是实际预览的时候,只有第一行才有tag,数据扩展出来的其他行单元格就没有,目前想要在拖动字段进去的时候,通过 image.png484667052.png ,这个方法添加一些我自己业务上的配置项,但是实际上却不行 image.png887428588.png image.png142149046.png image.png311429137.png ,我想问这咋获取到tag呢,因为tag很重要,很多单元格的信息都存这里的,在预览的时候希望获取到这个tag,然后根据tag信息做自己的业务处理,tag拿不到,但是getTemplateCell能拿到模板单元格的信息,或则tag实在取不到,还有没有替换方案呢,希望给单元格设置自己额外想要加的属性,这些属性是除开模板单元格字段属性之外的。
image.png850811157.png
image.png127163695.png
image.png864950561.png

8 个回复

倒序浏览
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-9-5 11:49:36
沙发
您好,问题收到,调研下回复您。
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-9-5 12:36:45
板凳
您好,您是在templateSheet中设置了tag  ,然后在预览模式下,点击任意一个单元格 ,获取此单元格在templateSheet的模板单元格中保存的tag吗?

如果是此需求:
您可以按照下面的代码进行设置,先设置setTag
image.png784948119.png
然后获取tag
  1. document.querySelector(".btn1").addEventListener("click", () => {
  2.             const reportSheet = spread.getActiveSheetTab()
  3.             const templateSheet = reportSheet.getTemplate()
  4.             var activeCellRow = reportSheet.getSheet().getActiveRowIndex();
  5.             var activeCellColumn = reportSheet.getSheet().getActiveColumnIndex();


  6.             const designTemplateCell1 = reportSheet.getTemplateCell(activeCellRow, activeCellColumn)

  7.             let usedRange = templateSheet.getUsedRange(GC.Spread.Sheets.UsedRangeType.all)
  8.             const {row,col,rowCount,colCount} = usedRange
  9.             for(let r = row;r<row+rowCount;r++){
  10.                 for(let c = col;c<col+colCount;c++){
  11.                     let templateCell = templateSheet.getTemplateCell(r,c);
  12.                     if(templateCell && templateCell.binding==designTemplateCell1.binding){
  13.                             console.log(templateSheet.getTag(r,c))
  14.                     }
  15.                 }
  16.             }

  17.         })
复制代码
结果如下:
image.png628961486.png
image.png558475951.png

附件如下: tag.html (5.93 KB, 下载次数: 14)
回复 使用道具 举报
gnip
高级会员   /  发表于:2024-9-5 15:08:33
地板
本帖最后由 gnip 于 2024-9-5 15:30 编辑
Ellia.Duan 发表于 2024-9-5 12:36
您好,您是在templateSheet中设置了tag  ,然后在预览模式下,点击任意一个单元格 ,获取此单元格在templat ...

您好,在报表预览绑定编辑事件,然后获取tag,只有第一行能获取到,复现文件已上传 image.png680080871.png ,然后吧原来代码改成这样也是获取不到的 image.png168252562.png ,我感觉这样其实也是没问题的呀,我估计报表预览底层没有做tag跟随数据进行扩展

tag (1).zip

2.36 KB, 下载次数: 22

回复 使用道具 举报
gnip
高级会员   /  发表于:2024-9-5 15:53:55
5#
gnip 发表于 2024-9-5 15:08
您好,在报表预览绑定编辑事件,然后获取tag,只有第一行能获取到,复现文件已上传,然后吧原来代码改成 ...

注释那里就算获取到了,会有个bug,如果后面单元格跟前面绑定的是一个字段,这里就会能匹配到前面的那个单元格而不是真正后面那个单元格的tag,同理下,多个地方拖的一个字段都会出现这个问题
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-9-5 16:00:58
6#
本帖最后由 Ellia.Duan 于 2024-9-13 17:30 编辑

您好,如您提到的,tag没有随数据进行扩展。
目前的方案如楼上提到的,遍历模板单元格,判断与预览中活动单元格的binding以及alias是否一致,如果一致,则返回模板单元格的tag。


同时,您的需求收到,移到需求版块。SJS-26465
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-9-14 14:35:14
7#
您好,setTemplateCell时,第三个参数templateCell是一个对象,可以在配置的属性外,添加您的自定义数据,如下代码:
  1.         columns.forEach((columnName, i) => {
  2.             let obj = {
  3.                 type: "List",
  4.                 binding: `student[${columnName}]`,

  5.             }
  6.             templateSheet.setValue(0, i, columnName);
  7.             templateSheet.setTemplateCell(1, i, {...obj,...{row: 1, col: i, content: `我是${columnName}`}})
  8.         })
复制代码
在模板预览时,可以通过getTemplateCell获取templateCellInfo ,  如下代码:
  1.    document.querySelector(".btn1").addEventListener("click", () => {
  2.             const reportSheet = spread.getActiveSheetTab()
  3.             var activeCellRow = reportSheet.getSheet().getActiveRowIndex();
  4.             var activeCellColumn = reportSheet.getSheet().getActiveColumnIndex();

  5.             const designTemplateCell = reportSheet.getTemplateCell(activeCellRow, activeCellColumn)
  6.             console.log(designTemplateCell)
  7.         })
复制代码


回复 使用道具 举报
gnip
高级会员   /  发表于:2024-9-14 14:47:59
8#
Ellia.Duan 发表于 2024-9-14 14:35
您好,setTemplateCell时,第三个参数templateCell是一个对象,可以在配置的属性外,添加您的自定义数据, ...

好的,这样确实可以,感谢
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-9-14 18:13:57
9#
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部