2016-10-24 5 views
0

페이지에 1.10 데이터 시트가 있습니다. 표에서 선을 복사 한 다음 다른 선에 붙여 넣을 수있는 옵션이 있습니다. 이것은 선택된 행을 검사하여 수행됩니다. 그리드를 다시 그리면 내 문제가 발생합니다.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 for 루프에서는 linenbr 속성을 콘솔에 기록 할뿐만 아니라 설명과 함께 경고하는 부분을 볼 수 있습니다. 그 시점에서 그 말이 맞습니다. 그러나 테이블을 다시 그릴 때, 테이블 정렬 기준 인 linenbr은이 줄이 복사 된 원래의 linenbr 이후의 다음 순차 번호에 해당하는 숫자로 변경됩니다. 누군가 내가 이것을 잘못하고 있다고 말할 수 있습니까? 모든 도움에 감사드립니다.

답변

0

밝혀졌습니다. 내가 복사하고 있던 행을 복제하고 있었지만, 대신 그것에 대한 참조를 만들고있었습니다. 그럼, here 주어진 예제를 사용하여 고정 ... 간단히 말하면, JSON.parse (JSON.stringify (newLine))