当前位置: 首页 > article >正文

antd+vue——table组件字段排序——对象数组排序 中文排序——基础积累

最近在用vue+antd做后台管理系统时,遇到一个需求就是要实现table表格某个字段的排序

效果图如下:
在这里插入图片描述
antd官网上,有关于排序的示例:
在这里插入图片描述
示例中给出的两个字段的排序

在这里插入图片描述
在这里插入图片描述
监听change事件,可以获取到当前排序的字段名

由于我这边的需求是按照文字排序,也就是中文文字排序,因此上面的代码不太适合

下面介绍我的写法:

1.给想要排序的字段添加sorter属性,这样才能在表格中有上下箭头的效果

...
{
    title: '订单包',
    dataIndex: 'groupNo',
    sorter: (a, b) => a.groupNo - b.groupNo,
    width: 100,
  },
  {
    title: '订单号',
    dataIndex: 'orderNo',
    sorter: (a, b) => a.orderNo - b.orderNo,
    width: 110,
  },
...

在这里插入图片描述

2.给table组件绑定change事件

 <a-table
        :rowKey="(r, i) => r.Id"
        :columns="columns"
        :data-source="tableList"
        :pagination="pagination"
        bordered
        :scroll="{ x: 1000, y: 460 }"
        @change="changeTable"
      >
 ...
</a-table>

3.监听change事件

changeTable(pagination, filters, sorter) {
  console.log(sorter);
  if (sorter && sorter.columnKey) {
    let list = this.tableList.sort(
      this.sortBy(
        sorter.columnKey,
        sorter && sorter.order == 'ascend' ? true : false
      )
    ); //sortBy是根据value字段对对象数组进行排序
    console.log(this.tableList);
    this.tableList = list;
  } else {
    const pager = { ...this.pagination };
    pager.current = pagination.current;
    this.pagination = pager;
    this.getList();
  }
},

先判断是否有sorter,如果有这个属性,则表示可以进行字段的排序,如果没有,则表示是切换了页码或者其他操作,是需要调接口的。
因为我这边的需求是:仅针对当前页面的数据进行排序,不需要调用接口排序。

此时需要用到汉字的排序:

sortBy(field, flag) {
  return function(a, b) {
    if (flag) {
      return b[field].localeCompare(a[field]);
    } else {
      return a[field].localeCompare(b[field]);
    }
  };
},

完成!!!多多积累,多多收获!


http://www.kler.cn/a/3690.html

相关文章:

  • 100天精通Python(可视化篇)——第81天:matplotlib绘制不同种类炫酷饼图参数说明+代码实战(自定义、百分比、多个子图、圆环、嵌套饼图)
  • C++语法(11)---- 模拟实现list
  • Python list列表删除元素的4种方法
  • 面试官:如何保证接口幂等性?一口气说了9种方法!
  • 史诗级详解面试中JVM的实战
  • C++智能指针
  • Python | 蓝桥杯系列文章总结+经典例题重做
  • SpringBoot 将PDF转成图片或World
  • 五、MyBatis各种查询功能
  • 怎么设计一个秒杀系统
  • 云原生领域下的开发平台
  • 【数据结构】树和二叉树的介绍
  • 基于 Docker 的深度学习环境:入门篇
  • 【LeetCode】链表练习 9 道题
  • 从零开始学OpenCV——图像灰度变换详解(线性与非线性变换)
  • 小程序逆向工程:这个开源的小程序逆向工具真不错,2023年亲测成功
  • 【面试题系列|Java】Java基础面试题
  • 使用txt编写Java代码并通过cmd命令执行
  • 常见HTTP状态码汇总
  • 计算机网络笔记——物理层