【前端】elementUI分页场景下对表格进行排序

在运用elementUI的table时,在column中加入sortable属性,即可对table进行排序,但排序仅限于单一页面,对分页场景则失效。
以下针对el-table的分页场景进行排序

<el-table
    :data='tableData.slice((page-1)*pageSize, page*pageSize)'
     @sort-change="sortChange"
>
   <el-table-column
           prop='id'
           label='id'
           sortable
   >
   </el-table-column>
   <el-table-column
           prop='Status'
           label='运行状态'
           sortable
   >
 </el-table>
// 根据属性值对表格进行排序
 private sortChange(arg: any) {
        if (arg.column) {
            let sortTableData = cloneDeep(this.tableData);
            if (arg.order === 'descending') {
                if (arg.prop === 'id') {
                    sortTableData.sort(this.sortByProp(arg.prop, true));
                } else {
                    sortTableData.sort(this.sortByName(arg.prop, true));
                }
            } else {
                if (arg.prop === 'id') {
                    sortTableData.sort(this.sortByProp(arg.prop, false));
                } else {
                    sortTableData.sort(this.sortByName(arg.prop, false));
                }
            }
            this.tableData = sortTableData;
        } else {
            this.tableData = this.jobListRaw;
        }
        this.page = 1;
    }
    private sortByProp(sortKey: any, order: boolean) {
        if (order) {
            return (a: any, b: any) => {
                return b[sortKey] - a[sortKey];
            };
        } else {
            return (a: any, b: any) => {
                return a[sortKey] - b[sortKey];
            };
        }
    }
    // 根据名称对表格进行排序
    private sortByName(sortKey: any, order: boolean) {
        if (order) {
            return (a: any, b: any) => {
                a[sortKey] = isNull(a[sortKey]) ? '' : a[sortKey];
                b[sortKey] = isNull(b[sortKey]) ? '' : b[sortKey];
                return b[sortKey].localeCompare(a[sortKey]);
            };
        } else {
            return (a: any, b: any) => {
                a[sortKey] = isNull(a[sortKey]) ? '' : a[sortKey];
                b[sortKey] = isNull(b[sortKey]) ? '' : b[sortKey];
                return a[sortKey].localeCompare(b[sortKey]);
            };
        }
    }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值