jQuery DataTables 1.10:它现在在哪一列上排序
jQuery DataTables 1.10: Which column is it sorted on right now?
Using DataTables 1.10,
我有一个具有默认排序的DataTable,用户可以按其他一些列进行排序。
如何检测表当前排序所依据的列?
一些可能与回答问题无关的上下文:我真正想做的是将表"导出"到非交互式 HTML 表。 此 DataTable 以编程方式生成,然后转换为 DataTable,因此在搜索导出选项后,看起来重新生成原始表比实际导出更容易。 但是我需要重新生成的表使行与当前排序的顺序相同。
可以像这样检索当前排序状态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']]
之外,数据表还将接受[1,'asc']
;我没有测试如果您传递数据表无法使用的值会发生什么。
这描述了仅按一列排序而不使用多列排序功能的默认情况。
当你已经在使用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);
})
演示 -> http://jsfiddle.net/zuxm2e68/
如果发送到服务器,请检查
order[i][column]
order[i][dir]
用于列和方向。请参阅此处
由于您使用的是 1.10,因此可以使用以下内容:
var table = $('.myTable').dataTable({ /* Your options */ });
var sortArray = table.api().settings().aaSorting; // gives array
如果您已经通过 $('.myTable').DataTable({...})
使用 API,则可以省略.api()
。
- 柱状图后面的一列
- 数据表通过分析一列的值对其进行排序
- Datatables-如何在未显示所有列的情况下禁用表中最后一列的排序
- 获取表中每行的一列的内容,然后循环访问每个内容
- 对象数组-与其他列数据相比,增加一列
- 在最初的查询/表格绘制中只提取谷歌电子表格的一列
- jQuery Datatables:单击一列时对另一列进行排序
- 我的砖石图像只显示在一列中
- jQuery DataTables 1.10:它现在在哪一列上排序
- 如何在JavaScript中基于一列对多维数组进行排序
- 使用Jquery Tablesorter,了解如何使其中一列成为加载页面时进行排序的默认列
- JQuery数据表排序前一列
- 在jQueryUI可排序的表之间移动一列,包括th
- JQuery Tablesorter:当另一列排序时显示
- 使用jquery和表排序器只排序一列
- 一次对多个列排序
- 排序集合与两列首先由一列,然后由第二列在Backbone.js
- 对表进行排序,但使一列不移动
- 如何在使用JQuery UI可排序功能时阻止一列可排序
- jQuery数据表插件,动态创建的最后一列平均在fnRowCallBack是不可排序的