2016-10-24 3 views
0

私はページ上に1.15のデータテーブルを持っています。テーブルから行をコピーし、その行を別の場所に貼り付けるオプションがあります。これは、選択された行をチェックすることによって行われます。だから、グリッドを再描画するときに私の問題が発生します。私は自分のDataTableを再描画していますが、この関数で何が問題になっています

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プロパティを書き込むことができます。その時点で、それらは正しいです。しかし、テーブルを再描画させると、テーブルを並べ替えるリネンブルは、このラインがコピーされた元のリネンブルの次の連続番号に対応する番号に変更されます。 誰かが私にこれに間違っていることを教えてもらえますか? ありがとうございました。

答えて

0

私はコピーしていた行を複製していましたが、代わりにそれを参照していました。したがって、hereの例を使用してこれを修正しました。単純に、JSON.parse(JSON.stringify(newLine))

関連する問題