找回密码
 立即注册

QQ登录

只需一步,快速开始

一线轨迹
注册会员   /  发表于:2024-3-4 13:37  /   查看:675  /  回复:3
100金币
本帖最后由 Joestar.Xu 于 2024-3-4 15:18 编辑


调研编号:SJS-23076

如图所示,我加载了一个table
image.png396809386.png
调换一下两列的顺序重新绑定数据后,name 列会多一个2
image.png782863464.png

怎么能让table的列不增加这个2,也达成对调的效果?



demo链接:
https://jscodemine.grapecity.com/sample/SjVcsO0GakWm-cYw8B-o4w/



===更新===

另外的发现:在前面加了一个 bindColumns名称就没有2了
image.png911568298.png

这两种情况下原本的筛选都没有了,如果我要保留之前设置的table筛选配置,如何处理?


===更新===

这个帖子可以解决问题
https://gcdn.grapecity.com.cn/showtopic-187315-1-1.html

最佳答案

查看完整内容

您好,经调研,这是因为 autoGenerateColumns=false时,这意味着表将保留原始表列信息,然后将该列绑定到现有列。 但是,当"name"和"skill"存在时,然后将新列info绑定到表中,它会首先将"skill"应用到"name",但在这个过程中,已经有一个"skill"列,因此, "skill"将更改为"skill2"。 因此,需要在交换列之前重置绑定列。

评分

参与人数 1金币 +200 收起 理由
Joestar.Xu + 200 赞一个!

查看全部评分

3 个回复

倒序浏览
最佳答案
最佳答案
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-3-4 13:37:47
来自 3#
您好,经调研,这是因为 autoGenerateColumns=false时,这意味着表将保留原始表列信息,然后将该列绑定到现有列。

但是,当"name"和"skill"存在时,然后将新列info绑定到表中,它会首先将"skill"应用到"name",但在这个过程中,已经有一个"skill"列,因此, "skill"将更改为"skill2"。

因此,需要在交换列之前重置绑定列。

  1. tableColumns = source.cols.map((col) => {
  2.   let tableColumn = new GC.Spread.Sheets.Tables.TableColumn();
  3.   tableColumn.name(col.title);
  4.   tableColumn.dataField(col.key);
  5.   return tableColumn;
  6. });
  7. tempCols = source.cols.map((col)=>{
  8.   let tableColumn = new GC.Spread.Sheets.Tables.TableColumn();
  9.   tableColumn.name('templ');
  10.   tableColumn.dataField('templ');
  11.   return tableColumn;
  12. });
  13. table.bind(tempCols);
  14. table.bind(tableColumns, 'data', { cols: source.cols, data: source.data });
复制代码
SpreadJS 17.0.8 | GcExcel 7.1.1 已发布~
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-3-4 14:53:45
2#
您好,您描述的情况我了解了,这边调研一下,后续有进展我会在本贴中回复您。
SpreadJS 17.0.8 | GcExcel 7.1.1 已发布~
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:7 天前
4#
您好,请问您的问题是否已经解决,如果仍未解决,欢迎继续回帖,我们来协助调研。
SpreadJS 17.0.8 | GcExcel 7.1.1 已发布~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部