element中表格排序空值问题

解决element自定义排序空值问题


一、先添加属性代码

先给html需要排序列中加上 :sortable=“true”

 <el-table-column prop="last_time" align="center" min-width="10%" label="最后跟进时间" :sortable="true" show-overflow-tooltip>

1,为el-tabel添加属性 :default-sort 为表格列添加默认的排序列和排列顺序

:default-sort="sortRule"

2,创建 :default-sort 默认绑定的 默认的排序列和排列顺序数据
再创建一个空 :tabData

return{
		sortRule:{ prop:null,order:null},//默认的排序列和排序书序
	 	tabData:'',//新默认tabel表格数据 用于不排序的时候赋值给默认表格tabel数据
}

二、编写排序部分代码

1, 给el-tabelde绑定点击排序出发事件@sort-change=“sortChange”

@sort-change="sortChange"

2, 点击列中排序按钮时候出发排序代码 在methods中编写

   methods: {
   // 点击按钮时触发
     sortChange(column) {
           let _this = this
           if (column.order !== null &&  column.prop === 'last_time') {       //last_time替换成你自己的列prop数据name
             const data = []
             for (let i = 0; i < _this.underclientlistData.length; i++) {     //underclientlistData替换成你自己的el-tabel绑定的表格数据
               //判断如果是空的push在数字后面,有值的就放在前面,然后把排好的数组再赋值给表格data
               if (_this.underclientlistData[i].last_time === null) {
                 data.push(_this.underclientlistData[i])
               } else {
                 data.unshift(_this.underclientlistData[i])
               }
             }
             _this.underclientlistData = data  //最后把排序好的表格数据赋值给排序前的表格数据 
           }
           //如果不排序了,就恢复到最初未排序的状态
           if (column.order === null) {
           //tabData是上面第一标题第2是创建的用来存放数据的  tabData在获取表格数据的时候存下表格数据意思等同于underclientlistData 
             _this.underclientlistData = _this.tabData 
           }
           //把当前排序的规则记录下来,给翻页时提供了默认排序条件
           _this.sortRule.prop = column.prop
           _this.sortRule.order = column.order
         },
}

3, 在获取表格数据的时候也给tabData存一下 用来备用不排序的时候赋值给之前的本来的表格数据
在这里插入图片描述
最终效果
实现前
在这里插入图片描述
实现后
在这里插入图片描述

Element-UI的Table组件是一个功能强大的表格插件,支持丰富的数据展示和交互。如果想要处理包含空列(即列宽为0或没有数据显示)的数据并进行排序,需要注意一些细节。 首先,在配置表头,对于那些不需要排序的空列,你可以设置`sortable`属性为`false`,例如: ```html <el-table-column type="index" label="#" width="50" :sortable="false"></el-table-column> ``` 然后,在数据渲染,即使某些行的对应值为空,你也可以正常地返回`undefined`或者其他标记空的值,因为El-Table会默认空值排序被放在最后。如果你希望特定的空值被特别处理,比如始终排在最前面,可以在排序函数里添加判断条件。 如果你想自定义排序规则,可以提供一个`sortMethod`属性,这个方法接收当前列的字段名、两个值以及它们的原始顺序作为参数,根据业务需求编写合适的比较逻辑。例如: ```javascript <el-table-column prop="yourColumn" label="标题" sortable sort-method="customSortFn"> </el-table-column> methods: { customSortFn(field, a, b) { if (a[field] === undefined && b[field] === undefined) { return 0; // 如果都是空值,则保持不变 } else if (a[field] === undefined) { return 1; // 空值排在非空值后 } else if (b[field] === undefined) { return -1; } else { // 正常排序逻辑 } }, } ``` 总之,处理Element-UI Table的空列排序,关键在于配置表头的可排序性、数据渲染的处理以及自定义排序方法,根据实际业务场景调整相应的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值