我有一个带有 jQuery DataTables 的表,并且希望允许手动行重新排序。因此我使用 a jQuery plugin that enables row reordering in DataTables .
问题是,通过启用行重新排序,我无法再对表进行排序。 rowreordering-plugin 的程序员已经明确表示这就是插件的工作原理,请参阅此处的讨论:https://code.google.com/p/jquery-datatables-row-reordering/issues/detail?id=1
现在我想在手动重新排序后启用排序,同样在排序后重新排序。如果排序破坏了手动顺序并“颠倒”了它,那也不是问题。
我想这是插件源代码中最相关的部分:
return this.each(function () {
var oTable = $(this).dataTable();
var aaSortingFixed = (oTable.fnSettings().aaSortingFixed == null ? new Array() : oTable.fnSettings().aaSortingFixed);
aaSortingFixed.push([properties.iIndexColumn, "asc"]);
oTable.fnSettings().aaSortingFixed = aaSortingFixed;
for (var i = 0; i < oTable.fnSettings().aoColumns.length; i++) {
oTable.fnSettings().aoColumns[i].bSortable = false;
/*for(var j=0; j<aaSortingFixed.length; j++)
{
if( i == aaSortingFixed[j][0] )
oTable.fnSettings().aoColumns[i].bSortable = false;
}*/
}
oTable.fnDraw();
Here is the complete source code .
通过在 for 循环中将 aoColumns[i].bSortable 设置为“true”,可以在表中启用排序,但如果单击列则没有任何效果。我正在寻找如何解决此问题的想法。 issue discussion 的最后一个条目说了一些有希望的事情,但它似乎对我不起作用。
我正在使用 DataTables 1.9.0 和 jQuery 1.7.1,因为该插件不适用于 Datatables 1.10 或 jQuery 2。
最佳答案
使用 dataTables 1.10.x 和新的“原生”RowReorder插入。将以下文件包含到您的项目中:
<script src="https://cdn.datatables.net/rowreorder/1.0.0/js/dataTables.rowReorder.min.js"></script>
<link href="https://cdn.datatables.net/rowreorder/1.0.0/css/rowReorder.dataTables.min.css" type="text/css" rel="stylesheet">
$('#example').DataTable( {
rowReorder: true
});
此处演示 -> http://jsfiddle.net/0f9Ljfjr/
关于jquery - DataTables (jQuery) 中的行重新排序后排序不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32698890/