前端element ui中的Table表格sortable实现全部数据分页排序

需要第一页数据和所有数据,代码可直接全部复制

<template>
  <div>
    <el-table
      :data="showedData"
      style="width: 100%;"
      @sort-change="sort_change"
    >
      <template v-for="(item,index) in cities">
        <el-table-column v-if="item.type=='sort'" :prop="item.prop" :label="item.label" :key="index" sortable="custom"></el-table-column>
        <el-table-column v-else :prop="item.prop" :label="item.label" :key="index" ></el-table-column>
      </template>
    </el-table>
    <el-pagination
      @current-change="handleCurrentChange"
      :current-page="pageSize"
      :page-size="pageSize"
      layout="total, prev, pager, next"
      :total="total">
    </el-pagination>
  </div>
</template>
<script>
  export default {
    data() {
      return {
        cities:[
          {
            prop:'position',
            label:'城市',
          },
          {
            prop:'followNum',
            label:'新增人数',
            type:'sort',
          },
          {
            prop:'unFollowNum',
            label:'取消关注人数',
            type:'sort',
          },
          {
            prop:'increaseNum',
            label:'净增人数',
            type:'sort',
          },
          {
            prop:'currdateFollowNum',
            label:'累积人数',
            type:'sort',
          }
        ], // 表头数组,数组中根据type判断该列是否可以排序
        pageNum: 1, // 当前页数
        pageSize: 4, // 每页条数
        total: 0, // 总数
        showedData:[
          {
            position:'成都',
            followNum:'11',
            unFollowNum:'22',
            increaseNum:'33',
            currdateFollowNum:44
          },
          {
            position:'长沙',
            followNum:'111',
            unFollowNum:'222',
            increaseNum:'333',
            currdateFollowNum:444
          },
          {
            position:'上海',
            followNum:'1',
            unFollowNum:'2',
            increaseNum:'3',
            currdateFollowNum:4
          },
          {
            position:'北京',
            followNum:'11111',
            unFollowNum:'22222',
            increaseNum:'33333',
            currdateFollowNum:44444
          }
        ], // 当前页的数据
        tableData: [
          {
            position:'上海',
            followNum:'1',
            unFollowNum:'2',
            increaseNum:'3',
            currdateFollowNum:4
          },
          {
            position:'成都',
            followNum:'11',
            unFollowNum:'22',
            increaseNum:'33',
            currdateFollowNum:44
          },
          {
            position:'长沙',
            followNum:'111',
            unFollowNum:'222',
            increaseNum:'333',
            currdateFollowNum:444
          },
          {
            position:'西安',
            followNum:'1111',
            unFollowNum:'2222',
            increaseNum:'3333',
            currdateFollowNum:4444
          },
          {
            position:'北京',
            followNum:'11111',
            unFollowNum:'22222',
            increaseNum:'33333',
            currdateFollowNum:44444
          }
        ], // 所有的数据
      }
    },
    mounted() {
    },
    methods:{
      sort_change(column) { // column是个形参,具体查看element-ui文档
        this.pageNum = 1 // return to the first page after sorting
        this.total = this.tableData.length
        this.tableData = this.tableData.sort(this.sortFun(column.prop, column.order === 'ascending'));
        this.showedData = this.tableData.slice(0, this.pageSize) // 排序完显示到第一页
      },
      sortFun (attr, rev) {
        //第一个参数传入info里的prop表示排的是哪一列,第二个参数是升还是降排序
        if (rev == undefined) {
          rev = 1;
        } else {
          rev = (rev) ? 1 : -1;
        }
        return function (a, b) {
          a = a[attr];
          b = b[attr];
          if (a < b) {
            return rev * -1;
          }
          if (a > b) {
            return rev * 1;
          }
          return 0;
        }
      },
      handleCurrentChange(val) {
        this.pageNum = val
        this.showedData = this.tableData.slice((this.pageNum-1)*this.pageSize,this.pageNum*this.pageSize)
      },
    }
  }
</script>

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
element-ui是一套基于Vue.jsUI框架,其table表格组件提供了许多强大的功能和骚操作。 首先,element-uitable表格支持对数据进行排序操作。只需设置column的sortable属性为true,即可实现对某一列数据的升降序排列,方便用户快速找到所需的信息。 其次,table表格还支持对数据进行筛选操作。通过设置filters属性,可以在表头显示可选的筛选项,用户可以选择自己需要的筛选条件,从而快速过滤数据,提高表格的可读性和实用性。 此外,element-uitable表格还支持分页功能。通过设置pagination属性,可以实现表格数据分页展示,方便用户浏览大量数据,同时也可以通过自定义分页器的样式和布局,满足不同项目的需求。 另外,table表格还提供了自定义列模板的功能。通过设置scoped slot,可以自定义表格每一列的展示方式,包括渲染不同的DOM元素、添加操作按钮等,非常灵活。 此外,element-uitable表格还提供了可编辑的功能。通过设置column的editable属性为true,可以实现编辑表格数据的功能,用户可以直接在表格进行数据的修改,提高数据的编辑效率。 最后,element-uitable表格还支持表格数据的导出和导入。通过设置导出按钮和导入事件,可以方便地将表格数据导出为Excel或导入Excel数据表格,提高了数据的共享和交互性。 综上所述,element-ui关于table表格的这些骚操作,使得我们可以更方便地对表格数据进行排序、筛选、分页、自定义列模板、编辑、导出和导入等操作,提高了表格的可读性、编辑效率和交互性,满足了不同项目的需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值