在 DataTables (jQuery) 中,行重新排序后进行排序不起作用。

4
我有一个使用jQuery DataTables的表格,想要允许手动重新排序行。因此我正在使用一款jQuery插件,在DataTables中启用行重新排序功能
问题是通过启用行重新排序,我不能再对表格进行排序。行重新排序插件的程序员已经明确表示了这就是插件的工作方式,请参见此处的讨论: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配合使用。

1个回答

5

请使用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
});

demo here -> http://jsfiddle.net/0f9Ljfjr/


哦,我的天啊...我不知道那个!非常感谢你! - undefined
@Gyrocode.com,谢谢。我实际上还保留着上周的标签页 - 甚至在警报中仍然无法使dragstart / mousemove事件起作用。 - davidkonrad
数据重排无法正常工作 http://jsfiddle.net/0f9Ljfjr/,你能告诉我背后的原因吗? - Deepak saini
@Deepaksaini - 在这里它可以工作;您可以通过单击“seq.”列来拖动行。 - davidkonrad
是的,明白了。实际上,我是使用其他的列完成了这个任务。 - Deepak saini
它不能掉落,当我放下它时,它应该回到之前的位置。 - Kem Bardly

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接