jQuery DataTables 1.10:它现在排序的是哪一列?

时间:2014-12-03 17:19:35

标签: javascript jquery datatables-1.10

使用DataTables 1.10,

我有一个默认排序的DataTable,用户可以使用其他一些列。

如何检测表当前排序的列?


某些与回答问题无关的上下文:我真正想要做的是将表“导出”到非交互式HTML表。此DataTable以编程方式生成,然后转换为DataTable,因此在搜索导出选项后,看起来基本上重新生成原始表比实际导出更容易。但我需要重新生成的表,使行的顺序与当前排序的顺序相同。

4 个答案:

答案 0 :(得分:1)

可以像这样检索当前排序状态sortInfo

var apiObject = $("#myPlainTable).DataTable( dtOptions );
// ...
var sortInfo = apiObject.settings().order()

更具体地说,列和方向的编码如下:

var sortCol = sortInfo[0][0]; // counting from left, starting with 0
var sortDir = sortInfo[0][1]; // either "asc" or "desc"

<强>注意事项:

用户更改排序后,sortInfo对象将具有上述格式;如果通过使用其他格式设置dtOptions.order来指定初始排序,则sortInfo对象将具有您指定的原始值,直到用户更改排序。 (例如,除了上述[1,'asc']之外,DataTables还会接受[[1,'asc']];我没有测试如果传递DataTables无法使用的值会发生什么。)

这描述了一种默认情况,即您只按一列排序,而不是使用多列排序功能。

答案 1 :(得分:1)

当您使用dataTables 1.10.x时,为什么不使用API?通过它很容易:

table.rows().data()

返回包含表的当前内容的数组数组,即当前排序的行。因此,如果要将dataTable的内容导出或克隆到静态表,实际上可以非常简单地实现:

$("#clone").click(function() {
  var cloneTable = '';
  table.rows().data().each(function(row) {
    cloneTable += '<tr><td>' + row.join('</td><td>') + '</td></tr>';
  })
  $('#cloneTable tbody').html(cloneTable);
})

演示 - &gt;的 http://jsfiddle.net/zuxm2e68/

答案 2 :(得分:0)

如果发送到服务器,请检查

order[i][column] 
order[i][dir] 

列和方向。见here

答案 3 :(得分:0)

由于您使用的是1.10,因此可以使用以下内容:

var table = $('.myTable').dataTable({ /* Your options */ });
var sortArray = table.api().settings().aaSorting; // gives array

如果您已通过$('.myTable').DataTable({...})使用API​​,则可以省略.api()