【Element UI排序】JavaScript 的表格排序sortable=“custom“和 @sort-change

发布于:2025-05-21 ⋅ 阅读:(20) ⋅ 点赞:(0)

Sortable — 是一个 JavaScript 库,用于在现代浏览器和触摸设备上对拖放列表进行重新排序。

一、elementUI排序功能实际案例

表格每一项中加上sortable,可以展示排序的小图标。

在列中设置sortable属性即可实现以该列为基准的排序,接受一个Boolean,默认为false。
如果需要后端排序,需将sortable设置为custom,同时在 Table 上监听sort-change事件,在事件回调中可以获取当前排序的字段名和排序顺序,从而向接口请求排序后的表格数据。

sort-change事件:当排序发生变化时触发该事件。

<el-table
      v-loading="loading"
      :row-class-name="setRowClass"
      :cell-class-name="setCellClass"
      :data="dataList.rows"
      :header-cell-style="{background:'#F7F7F7'}"
      border
      style="width: 100%;"
      // 监听sort-change事件
      @sort-change="getAllProSort">
      <el-table-column
        prop="division_name"
        label="部门名称"
        header-align="center"
        align="left"
        min-width="35%"
      >
        <template slot-scope="scope">
          <a style="color: #26A97D;text-decoration: underline;" @click="handleDept(scope.row)">{{ scope.row.division_name }}</a>
        </template>
      </el-table-column>
      <el-table-column
        prop="sales"
        label="销售额"
        header-align="center"
        min-width="35%"
        align="right"
        // 将sortable设置为custom
        sortable="custom"
      >
        <template slot-scope="scope">
          <span>{{ formatData(scope.row.sales) }}</span>
        </template>
      </el-table-column>
    getAllProSort(order) {
      const that = this
      if (order.order) {
        that.order_par = order.prop + ' ' + order.order.substring(0, order.order.indexOf('n') - 1)
      } else {
        that.order_par = 'division_no'
      }
      that.getDeptMonthBudgetDetailData()
    },
    getDeptMonthBudgetDetailData() {
      this.loading = true
      this.par.order_par = this.order_par
      this.par.data_type = this.scope
      this.par.date_month = this.dataYearMonth
      getDeptMonthBudgetDetail(this.par).then(res => {
        if (res.status === 'succ' && res !== null) {
          this.dataList = res.data
        } else {
          this.dataList = []
        }
        this.loading = false
      }).catch(err => {
        console.log(err.message)
        // alert('数据获取失败,请重试!')
      })
    },
data() {
    return {
      scope: 'sales',
      dataList: [],
      total: [],
      loading: false,
      par: {},
      date_start: '',
      date_end: '',
      // 初始化order_par
      order_par: 'division_no desc'
    }
  },

二、 实例2

也可以通过 Table 的default-sort属性设置默认的排序列和排序顺序。可以使用sort-method或者sort-by使用自定义的排序规则。
在这里插入图片描述

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

<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>

<script>
  export default {
    data() {
      return {
        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;
      }
    }
  }
</script>

三、 实例3

使用的default-sort属性:
取值为对象,设置表格数据的默认排序结果。

<el-table :default-sort=“{prop:‘age’,order:‘descending’}”>

prop设置排序字段,可以是没有实现可排序功能的字段。

参考文章Element UI排序
参考文章el-table实现动态数据的实时排序,一篇文章讲清楚elementui的表格排序功能,利用@sort-change实现动态数据排序,el-table排序方法,el-table可变数据的动态排序


网站公告

今日签到

点亮在社区的每一天
去签到