找回密码
 立即注册

QQ登录

只需一步,快速开始

梅梅梅梅
中级会员   /  发表于:2022-8-3 17:36  /   查看:3290  /  回复:17
10金币
版本9  一个表格渲染出来一个表头,根据某种条件,我想重新渲染一个表头 这种情况怎么实现呢。目前重新sheet.setValue(1, count+index1, item1.displayName, colHeader);sheet.bindColumn(count+index1, item1);之后 表头不会重新渲染

最佳答案

查看完整内容

这边根据提供的demo写个一个新的简单的例子,可以参考这个思路实现

17 个回复

倒序浏览
最佳答案
最佳答案
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2022-8-3 17:36:13
来自 15#
梅梅梅梅 发表于 2022-8-10 10:51
附件已经上传,想要实现的功能是编辑表格上面的文本框时,下面的表头能够跟随着动态添加与修改。

这边根据提供的demo写个一个新的简单的例子,可以参考这个思路实现

v9.zip

1.11 MB, 下载次数: 279

回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2022-8-3 18:09:35
2#
如果用的是表格绑定,直接重新绑定新的就会根据新的绑定来进行展示,例如这是原始绑定的
image.png486358947.png
重新绑定后的
image.png911961059.png
回复 使用道具 举报
梅梅梅梅
中级会员   /  发表于:2022-8-3 19:25:01
3#
Derrick.Jiao 发表于 2022-8-3 18:09
如果用的是表格绑定,直接重新绑定新的就会根据新的绑定来进行展示,例如这是原始绑定的

重新绑定后的

是表头进行重置了,不是表格的数据源。
回复 使用道具 举报
沉沉悬赏达人认证
金牌服务用户   /  发表于:2022-8-4 10:28:10
4#
一开始设置表头的时候,可以使用sheet.bindColumns()或者sheet.bindColumn()等方法,如果想要重置表头名称,不是表头字段,可以直接使用
sheet.setValue(0,0, '地址',GC.Spread.Sheets.SheetArea.colHeader)实现。
如果想要重置表头字段,则重新进行setColumn或setColumns 与setDataSource()
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2022-8-4 11:13:17
5#
梅梅梅梅 发表于 2022-8-3 19:25
是表头进行重置了,不是表格的数据源。

如果是镜像重置表格的数据,可以用下面代码设置列头的值,列头多的话,就遍历这些列头设置
activeSheet.setValue(0,1,"测试", GcSpread.Sheets.SheetArea.colHeader);

不支持通过setValue再bindColumn,这个是不会生效的。可以参考附件demo的思路。


v9.zip

1.11 MB, 下载次数: 277

回复 使用道具 举报
梅梅梅梅
中级会员   /  发表于:2022-8-4 12:11:22
6#
Derrick.Jiao 发表于 2022-8-4 11:13
如果是镜像重置表格的数据,可以用下面代码设置列头的值,列头多的话,就遍历这些列头设置
activeSheet. ...

我是这样封装了一个多行表头的方法,能帮着看一下 怎么修改,能够两次都调用这么方法吗?export function bindMultiTableColumn(sheet,header,rowCount){
        rowCount=rowCount||2;
        let colHeader = SpreadNS.SheetArea.colHeader;
        sheet.setRowCount(rowCount, colHeader);
        let addSpanColumn=0;
        let count=0;
        header.forEach((item,index)=>{
                sheet.setValue(0,count,item.displayName, colHeader);
                sheet.bindColumn(count, item);
               
                if(item.children&&item.children.length>0){
                        item.children.forEach((item1,index1)=>{
                                sheet.setValue(1, count+index1, item1.displayName, colHeader);
                                sheet.bindColumn(count+index1, item1);
                        })
                }
                if(item.addSpanRow){
                        sheet.addSpan(0,count,item.addSpanRow,1,colHeader)
                }
                if(item.addSpanColumn){
                        sheet.addSpan(0,count,1,item.addSpanColumn,colHeader)
                        count=count+item.addSpanColumn
                }else {
                        count++;
                }
               
        })
        sheet.setColumnCount(count);
        //设置表单保护
        sheet.protectionOption({
                allowResizeColumns: false, //不允许用户改变列宽
        });
}
回复 使用道具 举报
梅梅梅梅
中级会员   /  发表于:2022-8-4 12:21:26
7#
您提供的这种方式不太行啊 我改动数字框的时候,下面表头虽然增加了 但是我的表头要显示的文字没有添加上。
image.png430284728.png
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-8-4 18:32:43
8#
问题已经收到,这边再验证一下看看是否还有其他的办法,然后给你回复
回复 使用道具 举报
梅梅梅梅
中级会员   /  发表于:2022-8-9 16:09:42
9#
Richard.Ma 发表于 2022-8-4 18:32
问题已经收到,这边再验证一下看看是否还有其他的办法,然后给你回复

好的,谢谢
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部