这个函数有什么问题,我正在重绘我的DataTable

时间:2016-10-24 13:42:33

标签: javascript jquery datatables datatables-1.10

我在页面上有数据表1.10。可以选择从表中复制一条线,然后将该线粘贴到另一个位置。这是通过检查选定的行来完成的。所以,当我重新绘制网格时,我的问题出现了。

redrawGrid: function (position, newLine) {
        alert(newLine.linenbr)
        var tbl = $("#list").DataTable();
        var curData = tbl.rows().data();
        curData.splice(position, 0, newLine);
        console.log(curData);
        for (var ndx = 0; ndx < curData.length; ndx++) {
            alert(curData[ndx].descr)
            curData[ndx].linenbr = ndx + 1;
            console.log(curData[ndx].linenbr);
        }
        console.log(curData)
         tbl.clear();
         tbl.rows.add(curData);
         tbl.draw();

    },

以上是我的问题出现的功能。我传入应该粘贴线的位置。这是正确的立场。我传入与复制的行相关的数据。它是正确的。 在我清除表之前的console.log上,只要我创建一个错误或某些东西,表格不能清除和重绘,一切看起来都很完美。如果表重绘,则新行不会粘贴到应该的位置。而是将其粘贴在复制它的原始行的正下方。 在我的for循环中,您可以看到我通过描述提醒的位置以及将linenbr属性写入控制台。那时,那些是正确的。但是,如果我让表格重新绘制,那么我正在对表格进行排序的亚麻布将更改为与复制此行的原始亚麻布之后的下一个序列号对应的数字。 有人能告诉我我做错了什么吗? 感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

原来我正在克隆我正在复制的行,而是正在引用它。所以,通过使用给定here的示例修复此问题...简单地说,JSON.parse(JSON.stringify(newLine))