【问题标题】:move rows between two datatables在两个数据表之间移动行
【发布时间】:2013-11-29 00:03:10
【问题描述】:

事情就是这样,我有两个并排的数据表,我需要将表 A 中的项目(行)添加到表 B。

'之前'数据表我使用 append 做得很好:

function add(num)
{
      ...
      $("#myDiv1 tr#p"+num).appendTo("#myDiv2");
      ...
}

当然这不适用于数据表,因为它不会更新表,而且我似乎无法使用数据表函数让它工作,我的代码如下所示,但根本不工作:

function add()
{
       ...
       stockTable = $('#stocktable').dataTable();
       catalogTable = $('#catalogtable').dataTable();
       var trdata = stockTable.fnGetData($(this).closest('tr'));
       stockTable.fnDeleteRow($(this).closest('tr'));
       catalogtable.fnAddData(trdata);
       ...
}

帮助表示赞赏!

【问题讨论】:

    标签: jquery datatables


    【解决方案1】:

    目前还不清楚究竟是什么不工作,但这里有一个工作示例:

    stockTable.on('click', 'tbody tr' ,function() {
       var $row = $(this);
       var addRow = stockTable.fnGetData(this);
       catalogTable.fnAddData(addRow);
       stockTable.fnDeleteRow($row.index());
    });
    

    演示 -> http://jsfiddle.net/AgB38/


    更新。上面的答案是针对 dataTables 1.9.x。以下是针对 dataTables 1.10.x 的相同答案,使用新 API。

    stockTable.on('click', 'tbody tr' ,function() {
        var $row = $(this);
        var addRow = stockTable.row($row);
        catalogTable.row.add(addRow.data()).draw();
        addRow.remove().draw();
    });
    

    演示 -> http://jsfiddle.net/4cf43tv1/

    【讨论】:

    • 该死的天才。正是我需要的。显然我不知道自己在做什么,不,看起来很清楚......非常感谢。
    • davidkonrad,虽然你的代码是救命稻草,但在某处出现了故障,我将其更改为通过单击按钮来回移动行,但“有时”它发送错误的 tr,你能帮帮我吗?提前致谢。
    • v1.10 似乎没有任何这些 fn**** 功能。文档中也没有提到任何内容:(
    • 这个可以改成拖放而不是点击
    【解决方案2】:

    如果表格行具有自定义 css 样式,您可以使用 row().node 代替 row().data() 来复制类和其他属性

             btpick.click(function() {
                table1.rows({
                    selected: true
                }).every(function() {
                    table2.row.add(this.node());
                }).remove();
                table1.draw();
                table2.draw();
             });
    
    

    这里还有一个移动所有行的函数

             btpickall.click(function() {
                tqable2.rows.add(table1.rows().nodes()).draw();
                table1.clear();
             });
    

    【讨论】:

      猜你喜欢
      • 2016-02-22
      • 1970-01-01
      • 2013-10-13
      • 2011-04-23
      • 1970-01-01
      • 1970-01-01
      • 2021-11-21
      • 1970-01-01
      • 2019-01-22
      相关资源
      最近更新 更多