如何在datatable中获取已排序的列值?

时间:2013-05-31 15:05:05

标签: jquery sorting datatable

我有一个dataTable。我想在dataTable的列被排序时触发事件。 这是我的代码。

var productTable = $('#example').dataTable({
    "bFilter": true,
    "bJQueryUI": true,
    "bSort": true,
    "bLengthChange": true,
    "iDisplayLength": -1,
    "aLengthMenu": [[-1, 25, 50, 100], ["All", 25, 50, 100]],
    "sPaginationType": "full_numbers",
    "bPaginate": true
});   
$('#example').bind('sort',   function () { /* Here I want to get the value of the sorted coumn */});

在bind函数中,我想要已排序列的名称。任何人都可以帮我找到这个吗?

2 个答案:

答案 0 :(得分:2)

sort事件有两个参数。事件和数据表本身。使用datatable参数,您可以读取当前的aaSorting字段,并确定列排序的索引和列排序的方向。使用列排序的索引,您可以查找列并使用数据表aoColumns字段获取要排序的列的名称。

.bind('sort', function (e, dt) {
    var direction = dt.aaSorting[0][1];
    var columnIndex = dt.aaSorting[0][0];
    var columnName = dt.aoColumns[columnIndex].sTitle;
});

答案 1 :(得分:1)

引用DataTable的API参考:

fnSortListener将排序侦听器附加到给定列的元素

输入参数:

{node}: the element to attach the sort listener to
{int}: the column that a click on this node will sort on
{function}: callback function when sort is run

返回参数:

$(document).ready(function() {
  var oTable = $('#example').dataTable();

  // Sort on column 1, when 'sorter' is clicked on
  oTable.fnSortListener( document.getElementById('sorter'), 1 );
} );

因此,基本上,您必须将侦听器绑定到此事件,并且您将获得列的索引。然后你必须看看它的名字。