首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DataTables排序不同

DataTables排序不同
EN

Stack Overflow用户
提问于 2014-07-08 15:45:13
回答 3查看 702关注 0票数 1

我使用的是带有分层数据的DataTables库。我想要做的是使组始终以相同的顺序出现,并使列排序仅在组中应用。

例如,下表如下:

代码语言:javascript
复制
GROUP     FOOD
===================
fruit     banana
fruit     pear
fruit     apple
meat      steak
meat      chicken
meat      pork
vegetable zucchini
vegetable broccoli
vegetable tomato

当用户单击"food“列时,它应该按以下方式进行排序:

代码语言:javascript
复制
GROUP     FOOD ▲
===================
fruit     apple
fruit     banana
fruit     pear
meat      chicken
meat      pork
meat      steak
vegetable broccoli
vegetable tomato
vegetable zucchini

当用户再次单击"food“列时,应该按以下方式对降序进行排序:

代码语言:javascript
复制
GROUP     FOOD ▼
===================
fruit     pear
fruit     banana
fruit     apple
meat      steak
meat      pork
meat      chicken
vegetable zucchini
vegetable tomato
vegetable broccoli

然而,实际的行为是,它也颠倒了组的顺序:

代码语言:javascript
复制
GROUP     FOOD ▼
===================
vegetable zucchini
vegetable tomato
vegetable broccoli
meat      steak
meat      pork
meat      chicken
fruit     pear
fruit     banana
fruit     apple

这个例子展示了如何编写自定义排序函数;但是,无法从函数内部知道列是排序为ASC还是DESC。--在给定列上为ASC和DESC顺序指定不同排序函数的最佳方法是什么?

EN

回答 3

Stack Overflow用户

发布于 2014-07-08 16:00:46

通常,对于这些类型的表,您可以指定排序函数,并且将返回值从1切换到-1将更改排序。例如:

代码语言:javascript
复制
items.sort(function(a, b){
    if (a < b) { return 1; }
    else if (a === b) { return 0; }
    else { return -1; }
});

往一个方向排列,然后

代码语言:javascript
复制
items.sort(function(a, b){
    if (a < b) { return -1; }
    else if (a === b) { return 0; }
    else { return 1; }
});

另一种分类。

票数 0
EN

Stack Overflow用户

发布于 2014-07-09 15:19:19

经过大量的挖掘,我设法找到了当前排序方向的位置,在column.context[0].aaSorting[0][1]下面。aaSorting变量是数组数组,其底层包含当前排序列(作为整数)和排序方向(作为字符串;ascdesc)。

代码语言:javascript
复制
$.fn.dataTable.ext.order['grouped-item'] = function(settings, col){
    var column = this.api().column(col);
    var sortOrder = column.context[0].aaSorting[0][1];
    return column.data().sort(function(a,b){
        // ...
    }).map( function ( x, i ) {
        // ...
    } );
};
票数 0
EN

Stack Overflow用户

发布于 2014-07-09 16:04:44

既然我的另一个答案更符合原来的问题,我就不提了,但原来我问错了问题。DataTables允许您在按其他列排序之前强制按特定列进行排序。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24636193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档