Element Plus 表格后端排序

element 表格后端排序(element和element plus通用)

问题

element排序采用官方给出的方案,按部就班后的产生的问题是:给出的排序有三种状态,descendingascendingnull但是我只需要前面两种,目前的效果如下:在这里插入图片描述

解决方法

使用两个变量分别保存上一次为null时的prop和 保存之前的排序状态,实现效果:在这里插入图片描述

代码:

html:

 <el-table
          :data="dataObj.dataList"
          ref="multipleTable"
          slot="empty"
          :height="tableHeight"
          @sort-change="colChange"
          :sort-orders="['ascending', 'descending']"
          :default-sort="{prop: 'id', order: 'descending'}"
          :cell-class-name="rowClass"
      >

js(vue3的写法)

  const dataObj = reactive({
      searchObj: {
        id: '',
        planName: '',
        createUser: '',
        status: undefined,
        orderBy: 'id',
        orderType: 'desc',
      },
      dataList: [],
      searchPage: {
        pageSize: 10,
        pageNum: 1,
      },
      prevProp: 'id', // 保存上一次为null时的prop
      saveSort: 'descending',  // 保存之前的排序状态
    })
	// 排序
    const colChange = ({column, prop, order}) => {
      if (order && dataObj.prevProp !== prop) {
        dataObj.prevProp = prop
      }
      if (!order) {
        order = dataObj.saveSort === 'descending' ? 'ascending' : 'descending'
        that.$refs.multipleTable.sort(dataObj.prevProp, order)
        prop = dataObj.prevProp
      }
      dataObj.saveSort = order
      dataObj.searchObj.orderBy = prop
      dataObj.searchObj.orderType = dataObj.saveSort === 'descending' ? 'desc' : 'asc'
      if (column) getDataList() // 获取数据的方法
    }
    // 重置
    const resetData = () => {
      dataObj.searchPage.pageSize = 10
      dataObj.searchPage.pageNum = 1
      dataObj.searchObj = {}
      that.$refs.multipleTable.sort('id', 'descending')
    }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值