el-table表格进行排序 & 清除排序和清除排序箭头的高亮图标

el-table表格进行排序 & 清除排序和清除排序箭头的高亮图标

1、进行排序

效果图

在这里插入图片描述

代码

<template>
  <el-table
    ref="filterTable"
    :data="tableData"
    border
    :max-height="maxHeight"
    :highlight-current-row="true"
    @row-dblclick="rowDblClick"
    @sort-change="changeTableSort"
    style="width: 100%"
    :default-sort = "{prop: 'date', order: 'descending'}"
    >
    <el-table-column
      prop="date"
      label="日期"
      :sortable="'custom'"
      show-overflow-tooltip
      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>

<script>
  export default {
    data() {
      return {
        maxHeight: 460px,
        tableData: [{
          date: '2016-05-02',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1518 弄'
        }, {
          date: '2016-05-04',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1517 弄'
        }, {
          date: '2016-05-01',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1519 弄'
        }, {
          date: '2016-05-03',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1516 弄'
        }]
      }
    },
    methods: {
      formatter(row, column) {
        return row.address;
      },
      async rowDblClick(row) {
         consologe.log('双击获取当前行信息',row)   
      },
    //排序触发事件
    changeTableSort({order}) {
      if (order === 'ascending') {
        this.tableData.sort((a, b)=> a.name.localeCompare(b.name, 'zh')); //a~z 排序
      } if (order === 'descending') {
        this.tableData.sort((a, b)=> b.name.localeCompare(a.name, 'zh')); //z~a 排序
      }
    },
    }
  }
</script>

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

  • sortable : 对应列是否可以排序,如果设置为 ‘custom’,则代表用户希望远程排序,需要监听 Table 的 sort-change 事件。字符串/布尔值,true, false, ‘custom’ 默认false
  • default-sort : 默认的排序列的 prop 和顺序。它的prop属性指定默认的排序的列,order指定默认排序的顺序。 对象类型。order: ascending-升序, descending-降序。如果只指定了prop, 没有指定order, 则默认顺序是ascending。

注释

  • row-dblclick : 当某一行被双击时会触发该事件, 参数 (row, column, event)
  • border : 是否带有纵向边框 ,布尔值,默认false
  • max-height : Table 的最大高度。合法的值为数字或者单位为 px 的高度。 字符串/数字类型 , —
  • sort-change : 当表格的排序条件发生变化的时候会触发该事件 ,参数 { column, prop, order }
2、清除排序和清除排序箭头的高亮图标

排序后,切换日期或其他条件重新渲染表格数据,这时候需要去除排序箭头高亮样式

两步解决以上问题

1、第一步:增加ref=“table1”

<el-table
     :row-class-name="tableRowClassName"
     :data="resultAreaList1"
     style="width: 100%"
     @sort-change="changeTableSort1($event)"
     ref="table1"
>

2、第二步,clearSort(如果表格用了v-if控制,先判断一下表格是否存在)

if (this.$refs.table1) {
     this.$refs.filterTable.clearSort(); // 清除排序
     this.$refs.filterTable.columnConfig.order = '';  // 清除排序高亮图标
}

注:

不管是el-table自带的排序还是远程排序,使用官方文档中的clearSort方法都无法去除排序的高亮效果。只能通过把el-table-column组件中的columnConfig的order字段设置为空才能清除高亮

Vue.js 中,可以使用 Element UI 中的 el-table 表格组件来实现表格排序el-table 组件提供了一个 sortable 属性,可以设置表格排序方式。 以下是一个简单的 el-table 表格排序实现示例: HTML代码: ``` <template> <div> <el-table :data="tableData" :sortable="true"> <el-table-column prop="name" label="姓名" sortable></el-table-column> <el-table-column prop="age" label="年龄" sortable></el-table-column> <el-table-column prop="gender" label="性别" sortable></el-table-column> </el-table> </div> </template> ``` JavaScript代码: ``` <script> export default { data() { return { tableData: [ { name: '张三', age: 20, gender: '男' }, { name: '李四', age: 22, gender: '男' }, { name: '王五', age: 18, gender: '女' } ] } } } </script> ``` 在 el-table 组件中,设置 sortable 属性为 true,然后在每一个 el-table-column 列中设置 sortable 属性即可完成表格排序的功能。在 el-table-column 中设置 prop 属性为表格数据源中的对应属性名,设置 label 属性为列名。 如果需要对表格数据进行默认排序,可以在 el-table 组件中设置 sort-by 和 sort-direction 属性。sort-by 属性为表格数据源中的对应属性名,sort-direction 属性为排序方向,值为 ascending(升序)或 descending(降序)。 ``` <el-table :data="tableData" :sortable="true" :sort-by="'age'" sort-direction="ascending"> ``` 需要注意的是,el-table 的数据源必须是一个数组,每个元素都是一个对象,对象的属性名对应每一列的 prop 属性值。 这样,就可以通过 el-table 表格组件快速方便地实现表格排序功能了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值