【Vue-Element-Admin】table排序

本文介绍了在Vue应用中使用ElementUI的el-table组件实现前端和后端表格排序的方法,包括默认排序、列级排序以及通过sort-change事件触发后端请求排序数据的过程。
摘要由CSDN通过智能技术生成

背景

对表格排序大概分两种,一种是仅针对于当前界面排序(前端排序),另一种是对全量数据进行排序(后端排序)

页面排序(前端排序)

通过 Table 的default-sort属性设置默认的排序列和排序顺序;
在列中设置sortable属性即可实现以该列为基准的排序,接受一个Boolean,默认为false。

<template>
  <el-table
    :data="tableData"
    style="width: 100%"
    :default-sort = "{prop: 'date', order: 'descending'}"
    >
    <el-table-column
      prop="date"
      label="日期"
      sortable
      width="180">
    </el-table-column>
    <el-table-column
      prop="name"
      label="姓名"
      sortable
      width="180">
    </el-table-column>
    <el-table-column
      prop="address"
      label="地址"
      :formatter="formatter">
    </el-table-column>
  </el-table>
</template>

全量排序(后端排序)

如果需要后端排序,需将sortable设置为custom,同时在 Table 上监听sort-change事件,在事件回调中可以获取当前排序的字段名和排序顺序,从而向接口请求排序后的表格数据。

<template>
  <el-table
    :data="tableData"
    style="width: 100%"
    @sort-change="sortChage"
    >
    <el-table-column
      prop="date"
      label="日期"
      sortable="custom"
      width="180">
    </el-table-column>
    <el-table-column
      prop="name"
      label="姓名"
      sortable="custom"
      width="180">
    </el-table-column>
    <el-table-column
      prop="address"
      label="地址"
      sortable="custom"
      :formatter="formatter">
    </el-table-column>
  </el-table>
</template>

<script>
  export default{
    return{
        listQuery:{
            //page:1,
            //limit:20,
            //如果想兼容按条件导出,可以定义查询条件
            date:undefined,
            name:undefined,
            address:undefined,
        }
    },
    methods: {
      formatter(row, column) {
        return row.address;
      },
      getList(){
        this.listLoading=true
        findListByPage(this.listQuery).then(response=>{
          this.list=response.data['items']
          this.total=response.data['total']
          setTimeOut(()=>{
            this.listLoading=false
          },1.5*1000)
        })
      },
      handlerFilter(){
        this.listQuery.page=1
        this.getList()
      },
      sortChage(data){
        const {prop,order} = data
        this.sortByColumn(prop,order);
      },
      sortByColumn(prop,order){
        if (order === 'ascending'){
          this.listQuery.sort='+'+prop
        }else{
          this.listQuery.sort='-'+prop
        }
        this.handlerFilter()
      }
    }
 }
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值