DataTables 对列名称的二次排序单击

DataTables Secondary Sorting on column name click

我正在尝试对第 1 列进行二次排序,如果第 13 列在页面上被点击但没有中断任何其他点击列的功能。

这是 jQuery DataTable 代码

$('#table-report').dataTable({
            "aLengthMenu": [[10, 25, 50, 100], [10, 25, 50, 100]],
            "iDisplayLength": 10,
            "bFilter": true,
            "bInfo": false,
            "sEmptyTable": "No data returned for values input.",
            "sDom": '<top>l',
            "sPaginationType": "full_numbers",
            "bJQueryUI": false,
            "aoColumnDefs":
             [
                { 'bSortable': true, "aTargets": [0, 17] },
                { "sType": "time-us", "aTargets": [16] }
             ],
            "oLanguage": {
                "sLengthMenu": "View Per Page _MENU_ ",
                "sSearch": "Search all columns:"
            }
        });

我得到的最接近的是添加

{ targets: [13], orderData: [13, 1] }

"aoColumnDefs"。问题是排序(正确发生 - 主要和次要)发生在页面加载时并且禁用了按任何其他列排序的能力。

有人知道我如何才能改变我必须在点击第 13 列 header 时进行二次排序的内容,同时不通过点击相应的列来禁用按任何其他列排序的能力headers?

从您的定义命名来看,您似乎使用的是旧版本的 Datatables(1.9?)

为 1.9 尝试这样的操作:

    "aaSorting": [ [13,'asc'], [1,'asc'] ]"

或者更新到 1.10 会给你的代码一个选项,你尝试了一个更好的机会 运行 而不会崩溃。 Allen(数据表的制造者)在向后兼容性方面做得很好

终于明白了....

我最终在路由列中添加了一个 id header 并在点击时手动调用 fnsort

$('#dataTableId').fnSort([[13, 'asc'], [1, 'asc']])