angularjs ui-grid 列自定义排序 sortingAlgorithm的使用

在angularjs前端,对ui-grid组件的某一列进行自定义排序,在列定义中定义sortingAlgorithm参数,
内容是一个方法(a,b,c,d,e)
方法内a参数代表排序列第一个值,b代表第二个值,c代表第一行,d代表第二行,e有两个值‘asc’‘desc’,
排序方法是循环的,依次代入排序行。
普通用只需要a和b判断排序规则即可。这里有个坑,你不需要管e的值,你只需要制定正序的规则,
即可实现正序倒序默认的循环。
返回值是一个数字,和js数组排序方法的规则差不多。以下是一个列配置的例子。
endDate的值有‘尽快’‘['2024-01-01', '2024-02-02']’类似这种,需要处理尽快,
和字符串中出现的第一个时间进行排序。以下为处理逻辑。


{
field: 'endDate', displayName: '办结时间', width: 150, sortingAlgorithm: function (a, b, c, d, e) {
// if (a.includes('尽快') && e === 'desc') {
// return 1;
// }
if (a.includes('尽快') && b.includes('尽快')) {
return 0;
}
if (a.includes('尽快')) {
return -1;
}
if (b.includes('尽快')) {
return 1;
}
var ret = -1;
var strA = a.slice(2).split('"')[0];
var strB = b.slice(2).split('"')[0];
var arrA = strA.split('-').map(function (ret1) {
return Number(ret1);
});
var arrB = strB.split('-').map(function (ret2) {
return Number(ret2);
});
if (arrA[0] > arrB[0]) {
ret = 1;
}
if (arrA[0] === arrB[0] && arrA[1] > arrB[1]) {
ret = 1;
}
if (arrA[0] === arrB[0] && arrA[1] === arrB[1] && arrA[2] > arrB[2]) {
ret = 1;
}
// if (e === 'desc') {
// ret = -ret;
// }
return ret;
}
},
posted @   夏几把狂舞  阅读(49)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示