antd-vue中的表格排序

博客主要介绍了antd-vue中表格的排序方法,包括字符串类型和数字类型的排序。对于字符串排序,需在定义列columns时使用sorter;数字排序则直接return出a - b即可,分别以设备类型和卡号为例进行说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

antd-vue中的表格排序

在使用antd-vue的表格想实现排序,但是不知道怎么弄的可以看这里,此处讲解了一个是数字类的排序(例如成绩),一个是字符串类的排序(例如姓名)。
那么,我们开始吧。

字符串类型的排序

如图,我们要实现对字符串的排序,按照设备类型进行排序。
在这里插入图片描述
首先,antd的官方说了,在定义列columns时,里面有一个sorter排序,antd表格,下面是定义列的数据格式。

//注意,此处我只摘取了定义设备类型这一列的字段。
//我们重点看sorter
 const deviceColumns= [
 {
    title: '设备类型',
    dataIndex: 'type',
    key: 'type',
    sorter: {
      compare: (a, b) => {
        let a1 = a.type.slice(0, 1).charCodeAt();
        let b1 = b.type.slice(0, 1).charCodeAt();
        if (a1 < b1) {
          return -1;
        }
        if (a1 > b1) {
          return 1;
        }
        if (a1 == b1) {
          return 0;
        }
      },
    },
  }
  ],
  //解释:
  //列里面的sorter是可以进行排序的,里面的compare()函数就是我们的排序函数的逻辑。
  //思路:根据charCodeAt()获取到字符串的unicode编码,根据unicode编码去进行排序。
  //重点讲解:
        compare: (a, b) => {
        //a.type就是字符串"基站" "引擎",这边我是需要截取到基/引,然后再获取到unicode编码。
        //charCodeAt()如果里面不传参数,默认找0的unicode编码
        let a1 = a.type.slice(0, 1).charCodeAt();
        let b1 = b.type.slice(0, 1).charCodeAt();
        //此处,如果a1<b1,返回-1代表a1排前面
        if (a1 < b1) {
          return -1;
        }
        //此处,如果a1>b1,返回1代表a1排后面
        if (a1 > b1) {
          return 1;
        }
        //此处返回0就是不动
        if (a1 == b1) {
          return 0;
        }
      },

好了,理解玩代码之后那你就已经实现了功能啦,如图:
在这里插入图片描述

数字类型的排序

对于数字类型的排序更简单了,我们只需要直接return出a-b即可,此处以上图卡号为例.

 const deviceColumns= [{
    title: '设备类型',
    dataIndex: 'type',
    key: 'type',
    sorter: {
    //数字的直接return a-b;即可(负数为升序)
      compare: (a, b) => {
     	return a.card- b.card
      }
    },
  }],

Vue3 中,结合 Ant Design Vue (ant-design-vue) 实现分页表格通常需要以下几个步骤: 1. 安装依赖:首先确保已经安装了 Vueantd-design-vue,可以使用 `npm` 或 `yarn` 来安装: ```bash npm install vue@^3.0 antd @ant-design/icons # 或者 yarn add vue@next antd @ant-design/icons ``` 2. 导入组件:在你的 `.vue` 文件中导入需要的组件,如 `Table`, `Pagination` 和 `Icon`: ```javascript import { Table, Pagination } from 'ant-design-vue'; import PlusOutlined from '@ant-design/icons/PlusOutlined'; ``` 3. 创建数据源:你可以创建一个虚拟的数据数组,模拟分页效果: ```javascript const dataSource = Array.from({ length: 50 }, (_, index) => ({ key: `${index}`, name: `Name ${index + 1}`, age: `Age ${index + 1}`, address: `Address ${index + 1}`, })); ``` 4. 使用 `v-model` 绑定分页插件,并监听它的变化事件来动态加载数据: ```html <template> <div> <a-icon :type="currentMode === 'prev' ? 'chevron-left' : 'chevron-right'" slot="prev" @click="changePage(-1)" /> <Pagination :total="total" :current="currentPage" @on-change="changePage" /> <Table :data="filteredData" :columns="columns" :pagination="pagination" /> <a-icon type="plus" @click="addRow" /> </div> </template> // ... data() { return { currentPage: 1, pageSize: 10, dataSource, total: dataSource.length, columns: [ // ...你的列配置 ], pagination: { pageSizes: [10, 20, 30], // 可选分页大小选项 }, }; }, methods: { changePage(page) { this.currentPage = page; }, filteredData() { return this.dataSource.slice((this.currentPage - 1) * this.pageSize, this.currentPage * this.pageSize); }, addRow() { this.dataSource.push({ // ...添加新的行数据 }); this.total++; } } ``` 5. 根据需求定制表头、排序、搜索等功能,如果需要。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值