2017-02-12 1 views
0

데이터 테이블 documentation에 따르면 "각 데이터 요소는 배열, 객체, Javascript 객체 인스턴스 또는 tr 요소 일 수 있습니다."Datatables에 tr 태그의 행을 추가하는 방법

HTML

<table id="dt"> 
    <thead> 
    <tr> 
     <th>column 1</th><th>column 2</th> 
    </tr> 
    </thead> 
    <tbody> 
    <tr><td>row 0 col 1;</td><td>row 0 col 2;</td></tr> 
    </tbody> 
</table> 
<button id="mybutton" type='submit'>Add rows</button> 

JS

var data = ["<tr><td>row 1 col 1;</td><td>row 1 col 2;</td></tr>", "<tr><td>row 2 col 1;</td><td>row 2 col 2;</td></tr>"]; 

var datatable = $('#dt').DataTable(); 

$("body").on('click', '#mybutton', function(evt){ 
    console.log ("button clicked"); 
    datatable.rows.add(data); 
    datatable.draw(); 
    evt.preventDefault(); 
}) 
을 : 나는 문자열 배열을 반환하고 rows.add 방법을 사용하는 아약스를 사용하는 경우는 셀의 값으로 모든 문자를 해석하는 것

출력 예

이것을 보여주는 간단한 fiddle을 만들었습니다. 내가 뭘 잘못하고 있니?

+0

그냥 추가 할 값의 배열을 만드십시오. 데이터 테이블로 tr, td 등을 생성하십시오. – Bindrid

+0

버튼 유형이 제출 될 때 버튼 유형이 제출됩니다. – Bindrid

답변

1

이 코드는 HTML을 직접 변경하기 때문에 데이터 테이블에 데이터 테이블이 표시되도록 데이터 테이블을 삭제하고 다시 작성해야합니다. 이 코드는 그렇게합니다.

 $(document).ready(function() { 
      var md = ["<tr><td>row 1 col 1;</td><td>row 1 col 2;</td></tr>", "<tr><td>row 2 col 1;</td><td>row 2 col 2;</td></tr>"]; 

      var datatable = $('#dt').DataTable(); 


      $('#mybutton').on('click', function (evt) { 
       datatable.destroy(); 
       $.each(md, function (i, item) { 

        $('#dt tbody').append(item) 
       }); 
       datatable = $('#dt').DataTable(); 

      }) 

     }); 
+0

네, 그쪽으로 향하고있었습니다. 그건 잘 작동합니다. –

+0

나는 똑같은 문제가 있었으며이 솔루션은 완벽하게 작동합니다. – YLombardi

0

정상적으로 위에서 언급 한 것처럼 데이터에 html을 추가하지 않습니다. 그냥 데이터를 전달하십시오. 그러나 이런 식으로해야 할 실질적인 이유가 있다면 여기에서 작동하는 한 가지 방법이 있습니다.

var data = ["<tr><td>row 1 col 1;</td><td>row 1 col 2;</td></tr>", "<tr><td>row 2 col 1;</td><td>row 2 col 2;</td></tr>"]; 

var datatable = $('#dt').DataTable(); 

$('#mybutton').on('click', function(evt){ 
    $.each(data, function(i, item){$('#dt tbody').append(item)}); 
    datatable.rows.invalidate().draw() 
}) 
+0

많은 감사. 이것은 새로운 행을 표시하지만, 데이터 테이블 정보가 여전히 "0 행"으로 표시되고 검색에서 내용을 찾지 못하기 때문에 데이터 구조에 올바르게 포함하지 않는 것처럼 보입니다. tr 태그를 사용하여 rows.add() 함수를 사용할 수 있어야한다고 제안하는 문서의 주석에 의해 당황 스럽지만 다른 제안을 추구 할 것입니다. –

+0

이 코드는 오류로 인해 작동합니다. 내 나쁜, 그것을 무시하십시오 – Bindrid

0

이것은 실제로 어떻게 처리 할 것인가입니다.

var data = [["row 1 col 1","row 1 col 2;"],[ "row 2 col 1;", "row 2 col 2;"]]; 

var datatable = $('#dt').DataTable(); 

$('#mybutton').on('click', function(evt){ 
    datatable.rows.add(data).draw() 
}) 
+0

이 솔루션을 작동하는 볼 수 있지만이 접근 방식을 내 문제는 datatables 친숙한 형식으로 테이블 데이터를 생성하는 주위에 전체 스크립트를 구성하는 것을 의미합니다. 내가 datatables에 대해 정말로 좋아하는 것은 하나의 jQuery 함수 호출로 대부분의 기능에 액세스 할 수 있다는 것입니다. 즉, 나중에 생각할 때 추가 할 수 있다는 것을 의미합니다. –

+0

실제로 이것은 더 현실적입니다. 기본적으로 데이터베이스에서 데이터를 가져 와서 배열이나 객체 배열에 넣은 다음 클라이언트에게 보내면됩니다. 이 시점부터 DataTable은 어려운 일을 해나 갈 것입니다. – Bindrid

관련 문제