jquery-datatables多列排序方向

时间:2014-12-17 13:55:20

标签: javascript sorting jquery-datatables

使用jquery-datatables。

示例:http://jsfiddle.net/b2fLye17/17/

$('#example').DataTable({

    filter:false,
    columnDefs: [
                    {
                        targets: [1],//when sorting age column
                        orderData: [1,2] //sort by age then by salary
                    } 
                ]
});

单击年龄列时,表格按年龄递增,然后按工资升序排序。

根据年龄上升然后按工资下降,我可以选择哪种方式进行排序?

谢谢!

--------------------------编辑1 ------------------- -

澄清:当年龄列按升序排序时,它应按年龄递增,然后按工资降序排序。当年龄列按降序排序时,它应按年龄递减,然后按工资升序排序

--------------------------编辑2 ------------------- -

所需结果enter image description here

的图片

4 个答案:

答案 0 :(得分:2)

使用

$(document).ready(function() {

    $('#example').DataTable({

        filter:false,
        columnDefs: [
                        {
                            orderData: [[1, 'asc'], [2, 'desc']]//sort by age then by salary
                        }
                    ]
    });
});
JS小提琴 http://jsfiddle.net/b2fLye17/13/

答案 1 :(得分:2)

感谢您提出这个问题,我也遇到了同样的问题,然后解决了以下问题

var oTable=$('#example').dataTable({
filter:false
});

oTable.fnSort( [[1,"asc"], [2,"desc"]]);

希望这有用

答案 2 :(得分:1)

在这里。它有点被黑,但是我一直在花费HOURS试图找出相同的最终目标 - 从两列中排序。 http://jsfiddle.net/b2fLye17/23/

<td data-age="40">$320</td>
//In custom sort:
var value = parseInt($(td).attr('data-age') + pad(td.innerHTML.substring(1), 10, '0'));

概念: 我还没有找到一种方法来访问foreach循环中列外的其他单元格,所以我添加了一个&#34;数据 - &#34;属性到我们想要排序的单元格。这个数据属性与我们关心的另一个排序列具有相同的值...所以在我们弄清楚如何访问其他相邻的&#39;之前,会有一些重复的数据。循环中的细胞。

我合并了两个值(隐藏属性和可见值),然后转换回要编入索引的int。由于值的长度不同,我用零填充第二列(4086 vs 40086)。

答案 3 :(得分:1)

您可以var row = settings.aoData._aData[i];获取行中的所有数据并将其与j0xue解决方案相结合,这样您就可以按照另一列进行排序,而无需在html中添加属性。