我有一个使用jQuery DataTables的表格,想要允许手动重新排序行。因此我正在使用一款jQuery插件,在DataTables中启用行重新排序功能。
问题是通过启用行重新排序,我不能再对表格进行排序。行重新排序插件的程序员已经明确表示了这就是插件的工作方式,请参见此处的讨论:https://code.google.com/p/jquery-datatables-row-reordering/issues/detail?id=1 现在我想在手动重新排序后仍然能够启用排序,并且也可以在排序后重新排序。如果排序破坏了手动顺序并且“反转”了它,那也没关系。
我想这是插件源代码中最相关的部分:
问题是通过启用行重新排序,我不能再对表格进行排序。行重新排序插件的程序员已经明确表示了这就是插件的工作方式,请参见此处的讨论: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();
通过在for循环中将aoColumns[i].bSortable设置为“true”,可以在表格中启用排序,但如果我单击列,则不会产生任何效果。我正在寻找一个解决这个问题的方法。 问题讨论 的最后一个条目提供了一些有希望的建议,但似乎对我没有起作用。
我正在使用DataTables 1.9.0和jQuery 1.7.1,因为该插件无法与Datatables 1.10或jQuery 2配合使用。