element table 中sortable排序

在项目中做表格的排序,我使用的是自定义的排序,也就是通过后台接口进行的排序,写个文章记录一下element的三种排序方式。

在列中设置sortable属性即可实现以该列为基准的排序,接受一个Boolean,默认为false。可以通过 Table 的default-sort属性设置默认的排序列和排序顺序。可以使用sort-method或者sort-by使用自定义的排序规则。如果需要后端排序,需将sortable设置为custom,同时在 Table 上监听sort-change事件,在事件回调中可以获取当前排序的字段名和排序顺序,从而向接口请求排序后的表格数据。在本例中,我们还使用了formatter属性,它用于格式化指定列的值,接受一个Function,会传入两个参数:row和column,可以根据自己的需求进行处理。

一、default-sort
你需要在那个列上加排序就在那一份列上加sortable ,加完后就会出现排序的按钮了,default-sort 可以设置默认的列和它默认的排列方式 , order 为 ascending 按钮选中的是向上的箭头,如果 order 为 descending 那选中的是向下的箭头。

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

在这里插入图片描述

二、sort-method

自定义方法我们需要在当前列加入sort-method,然后它的方法和sort排序是一样的,这样我们就可以自定义排序

 <el-table :data="tableData" height="250" border style="width: 100%">
      <el-table-column
        prop="date"
        sortable
        label="日期"
        :sort-method="fn2"
        width="180"
      >
      </el-table-column>
      <el-table-column prop="name" label="姓名" width="180"> </el-table-column>
      <el-table-column prop="address" label="地址"> </el-table-column>
    </el-table>
  methods: {
    fn2(a, b) {
      return a - b;
    }
  }

在这里插入图片描述
三、custom-sort
根据接口进行排序,我们也需要自定义排序,这个和第二种方法不一样,第二种只是进行排序,我们不能做其他的操作

    <el-table
      :data="tableData"
      height="250"
      border
      style="width: 100%"
        @sort-change="handlesortChange"
    >
      <el-table-column prop="date" sortable="custom" label="日期" width="180">
      </el-table-column>
      <el-table-column prop="name" label="姓名" width="180"> </el-table-column>
      <el-table-column prop="address" label="地址"> </el-table-column>
    </el-table>
  // 主要是column中的值,你需要给你的后端传过去,我的paramsObj 就是传给后端的
    handlesortChange(column) {
      if (column.order == "ascending") {
        this.paramsObj.asc = true;
      }
      if (column.order == "descending") {
        this.paramsObj.asc = false;
      }
    }

在这里插入图片描述

  • 4
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

月落星河°

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值