element-plus中Table排序需要后端排序 使用sortable=“custom“ 的用法

1.多列筛选,在对应el-table-column 中 设置 prop 及 sortable="custom",如下

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

        <el-table
          v-loading="loading"
          :data="list"
          stripe
          show-overflow-tooltip
          @selection-change="handleSelectionChange"
          @sort-change="handleSortChange"
        >
          // value1排序
          <el-table-column prop="value1" label="总价1" sortable="custom" min-width="110">
            <template #default="scope">{{ scope.row.value1 }} </template>
          </el-table-column>
           // value2排序
          <el-table-column prop="value2" label="总价2" sortable="custom" min-width="110">
            <template #default="scope">{{ scope.row.value2 }} </template>
          </el-table-column>
           // value3排序
          <el-table-column prop="value3" label="总价3" sortable="custom" min-width="110">
            <template #default="scope">{{ scope.row.value3 }} </template>
          </el-table-column>

        </el-table>

 3.因为接口传参的特殊性,所以我这个多列排序内容涉及到置空参数

// table排序箭头变化时触发(3种状态 ascending  descending null )
const handleSortChange = (column: any, prop, order) => {
  console.log(prop, 'prop')
  console.log(order,'order')
  // 在方法触发时先获取并保存接口需要的字段,调用分页方法,分页方法中掉用了获取列表数据方法
  // column.order为空时仅刷新页面
  if (column.order === null) {
    listQuery.value1 = '' // 数量1排序方式 1从大到小 2从小到大
    listQuery.value2 = '' // 数量2排序方式1从大到小 2从小到大
    listQuery.value3 = '' // 数量3排序方式 1从大到小 2从小到大
    listQuery.value4 = '' // 数量4 1从大到小 2从小到大
    listQuery.value5 = '' // 数量5 1从大到小 2从小到大
    handleSearch() // 查询方式
    return
  }
  // 根据colume.prop判断是哪一列(点击的当前是哪一列)
  // 根据colume.order判断是升序还是降序,并根据接口需要赋值2或1
  // ascending 升序从小到大
  if (column.prop === 'value1') {
    listQuery.value1= column.order === 'ascending' ? 2 : 1
    listQuery.value2= null
    listQuery.value3= null
  } else if (column.prop === 'value2') {
    listQuery.value2= column.order === 'ascending' ? 2 : 1
    listQuery.value1= null
    listQuery.value3= null
  } else if (column.prop === 'value3') {
    listQuery.value3= column.order === 'ascending' ? 2 : 1
    listQuery.value1= null
    listQuery.value2= null

  }
  handleSearch() // 调用查询方法
}

4.change事件的另外2个参数prop以及order 输出无内容(暂不知原因)

使用Element UI的el-table组件时,您可以将sortable属性设置为'custom'以启用自定义排序。您也可以通过设置multi-sort属性来允许同时选择多列进行排序。 要使用后端排序,您需要在请求后端数据时将排序规则传递给后端。在el-tablesortable-change事件,您可以获取当前的排序规则,然后将其传递给后端。 以下是一个示例代码,演示如何启用自定义排序和多列排序,并在后端使用排序规则进行排序: ``` <el-table :data="tableData" :sort-method="sortTable" :multi-sort="true" @sortable-change="onSortChange"> <el-table-column prop="name" label="名称" sortable="custom"></el-table-column> <el-table-column prop="age" label="年龄" sortable="custom"></el-table-column> <el-table-column prop="gender" label="性别"></el-table-column> </el-table> ``` 在上面的代码,我们将sortable属性设置为'custom',并将sort-method属性设置为sortTable方法。sortTable方法接收两个参数:当前排序列的prop和排序顺序('ascending'或'descending')。在sortTable方法,您可以将排序规则存储在组件的data,并在后续的请求使用它。 ``` methods: { sortTable(prop, order) { this.sortProps = [{ prop: prop, order: order }]; return true; }, onSortChange(sort) { this.sortProps = sort.sortProps; // 在此处调用后端API以获取排序后的数据 } } ``` 在上面的代码,我们使用sortProps数组存储当前的排序规则。在sortable-change事件,我们更新sortProps数组并使用它来调用后端API以获取排序后的数据。 请注意,上述代码仅提供了一个基本示例,并且您需要根据自己的需求进行修改和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值