使用DataTables 1.10,
我有一个默认排序的DataTable,用户可以使用其他一些列。
如何检测表当前排序的列?
某些与回答问题无关的上下文:我真正想要做的是将表“导出”到非交互式HTML表。此DataTable以编程方式生成,然后转换为DataTable,因此在搜索导出选项后,看起来基本上重新生成原始表比实际导出更容易。但我需要重新生成的表,使行的顺序与当前排序的顺序相同。
答案 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)
答案 3 :(得分:0)
由于您使用的是1.10,因此可以使用以下内容:
var table = $('.myTable').dataTable({ /* Your options */ });
var sortArray = table.api().settings().aaSorting; // gives array
如果您已通过$('.myTable').DataTable({...})
使用API,则可以省略.api()
。