layui 自定义排序_改造 layui 表格组件实现多重排序

本文介绍了如何改造layui的表格组件以支持多重排序。通过增加一个排序列数组,修改表头点击事件,更新表格排序方法,并调整后台传参,实现了按住shift键增加排序列,按住ctrl键减少排序列的功能。最后,展示了改造后的后台代码和前端代码示例。
摘要由CSDN通过智能技术生成

layui 的表格组件目前只支持单列排序,在实际应用中并不能很好的支撑我们的业务需求。今天一时手痒,决定改造一番以支持多重排序。

实现思路也比较简单,只需要用一个数组来存放所有排序的列,再把这个数组传到后端(后端排序)进行排序即可。沿用一般的使用习惯,按住 shift 键点击表头可增加排序列,按住 ctrl 键点击表头可减少排序列。话不多说,先上最终效果图:

1. 定义排序列数组

我当前用的是 2.5.6 版本,源码之前为适应业务需求也做过相应修改,所以下文说到的行数只是个大概数。

为兼容之前单列排序的使用习惯,我们增加一个 multiSort 的配置属性,默认为 false,为 true 时才开启多列排序。修改源码大概第 235 行,增加两个属性 multiSort、sortCols。

//构造器

, Class = function (options) {

var that = this;

that.index = ++table.index;

that.mutlSort = false;

that.sortCols = []; // 组合排序列集合

that.config = $.extend({}, that.config, table.config, options);

that.render();

};

2. 修改表头点击事件

之前单列排序是根据点击的表头,将表头对应的字段和排序类型(asc、desc)做为参数传给 sort 方法。这里我们需要稍做修改,当按住 shfit 键点击表头时增加排序列,当按住 ctrl 键点击表头时减少排序列。修改源码大概 1511 行

//排序

th.on('click', function (e) {

var othis = $(this)

, options = that.config

, elemSort = othis.find(ELEM_SORT)

, nowType = elemSort.attr('lay-sort')

, field = othis.data('field')

, type;

if (!elemSort[0] || resizing === 1) return resizing = 2;

if (nowType === 'asc') {

type = 'desc';

}

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值