vue+element合并单元格后的排序

平时写的比较少,不好之处多多见谅,纯自己开发重遇到的问题.目的: 使同行少踩些坑(累计经验)

先简单说下合并,如下图

 list就是后台返回的的列表数据, 此代码的需求是根据每行的其中一个字段相同来进行合并的标识,也就是在data里定义的spanArr数组 和 pos 索引 

 

 这个只是如果每行的特定字段(uld)相同合并前5列,如何想合并其他不固定列,如下

 大致就是把想合并列的索引给个数组,然后查询遍历即可

接下来是我们的文章的中心

原因: 合并之后排序的数据合并没有更新(就是还是按照第一次后台返回的列表数据的顺序合并的)

 

 给每次点击排序图标的点击方法里 对数据进行更新处理 tableData 为后台返回的列表数据在 data中定义的数组 此时排序后的列表数据合并会根据排序后的数据进行合并

创作不易,希望更多的帮助大家,如果反馈良好,我会在工作之余继续把之前以及日常的需求和bug陆续发表.话不多说,你们的支持就是我的动力 

ps: 本文为原创, 如果转载或其他 请注明 原创来源  sen

Vue.js中,`el-table`是一个用于构建表的组件,它来自Element UI库。当使用`el-table`进数据展示并设置了单元合并(通常通过`rowspan`和`colspan`属性来实现),并且尝试对表进排序操作时,可能会遇到排序结果不符合预期的问题。 这是因为合并后的单元在渲染时实际上是将数据连接在一起,但是在排序算法内部,它可能还是按单独的单元处理,导致了实际排序的位置与视觉上显示的顺序不符。比如,当你按照合并单元的内容进升序或降序排序时,可能会发现某些原本相邻的数据在排序后分属不同的。 解决这个问题的一个常见做法是,在数据处理层面上进手动排序,确保合并的单元内容在排序时被视为整体。例如,你可以创建一个新的数组,其中包含完整的、未合并的数据,并在此基础上进排序,然后返回给`el-table`的数据源。 ```javascript data() { return { tableData: [ // ...原始数据... ], sortedData: [], // 初始化一个空数组来存储排序后的完整数据 }; }, methods: { handleSort(column) { this.sortedData = this.tableData.map(row => { // 将合并的单元视为整体处理排序 let cellValue = row[column.prop].join(''); return { ...row, [column.prop]: cellValue }; }).sort((a, b) => a[column.prop] > b[column.prop] ? 1 : -1); this.tableData = this.sortedData; // 更新数据源 }, } ``` 在上面的例子中,`handleSort`函数首先将每个合并单元的内容合并成一个字符串,然后再进排序。这样可以保证排序效果符合用户预期。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值