jQuery Datatables - 如何按列进行编程排序

时间:2015-07-16 16:01:48

标签: javascript jquery datatables

所以我有一个数据表:

$(tables[i]).DataTable({
    paging: false,
    searching: false,
    info: false,
    ordering: true,
    autoWidth: false,
    columns: [ ... column stuff here ... 
        {name: "Name"},
        {name: "Account"},
        {name: "Number"}
    ]
});

稍后在代码中,我会在按钮上查看单击事件,以便我可以从表中获取一些数据然后按列排序

var columnName = $('.mySelectBox').val();
var columnNumber = 0;

if(columnName === "Account")
    columnNumber = 1;

var table = $(tables[i]).DataTable();

我想现在按此按钮点击第0列或第1列排序。 但不是在任何其他专栏上。

//this doesn't work for me
table.sort( [ [columnNumber, 'desc'] ] );

2 个答案:

答案 0 :(得分:15)

我使用.order()代替.sort()。例如:

$('#dataTables-example').DataTable().order([0, 'desc']).draw();

其中0是列的ID。

答案 1 :(得分:0)

您可以使用表格的订单方法轻松完成此操作。您可以采用以下技术。

我们需要在这里做两件事。

  • 获取当前列索引
  • 点击图标
  • ,在特定列上应用升序或降序操作

在这里,我们假设我们有一个按钮或链接单击进行绑定。

$(".arrow-sort-ascending").bind("click", {
 // Sorting should happen here
}

获取列索引

我使用通用方法获取列名。如果您使用的是Jquery,我们可以使用此方法获取列索引。

myColumn = $(parent).prevAll().length

其中 parent 应该是特定列的 th

应用升序或降序

 // ascending
 myTable.order([myColumn, "asc"]).draw()

因此,如果我们将代码放在一个部分中,它就像这样。

table = myTable // This is datatable you initialized

$(".arrow-sort-ascending").bind("click", {table: table}, function(event){
    parent = $(event.target).parent()
    myIndex = $(parent).prevAll().length;
    table.order([myIndex, "asc"]).draw()
}

因此,每当我们点击向上箭头图标时,它会对点击的列进行排序。