2014-11-05 12 views
8

tôi tự động thêm hàng mới về DataTables 1.10.2 bằng cách sử dụng phương pháp table.row.add() sử dụng mã này:dữ liệu đặt trên hàng thêm vào DataTables 1.10

table.row.add([ 
    '', 
    name, 
    target_l, 
    details, 
    panel.html()  
]).draw(); 

tôi sản xuất mark-up này:

<tr role="row" class="odd"> 
    <th>1 .</th> 
    <td class="sorting_1">ID Fee</td> 
    <td>All students</td> 
    <td></td> 
    <td> 
     <button class="btn btn-null btn-xs" onclick="_remove(59, 'ID Fee')"> 
      <span class="fui-cross"></span> 
     </button> 
     <button class="btn btn-null btn-xs" onclick="_edit(59, 'ID Fee', '', '')"> 
      <span class="icon-pencil"></span> 
     </button> 
    </td> 
</tr> 

Điều tôi muốn làm là thêm một id dữ liệu (và các dữ liệu khác) thuộc tính vào thẻ tr mới được thêm (trên hoặc sau hàng chèn) và làm như sau:

<tr data-id="59" role="row" class="odd"> 

tôi đã quản lý để có được những chỉ số của hàng mới được bổ sung bằng cách sử dụng mã số và nó sẽ trả về chỉ số hàng cuối cùng:

var i = table.row.add([ 
    '', 
    name, 
    target_l, 
    details, 
    panel.html()  
]).index(); 

Và cũng đã cố gắng để thực hiện những điều sau để thêm dữ liệu thuộc tính id sử dụng rằng index:

var id = $("#department_id").val(); 
table.row(i).attr("data-id", id); 
// table.row(i).data("id", id); 
// I wanted to try this but there is also a method called data() already in 
// DataTables so it will not work like in JQuery. 

tôi mới đến dữ liệu Bàn và đã cuộn mã nguồn của nó, làm đỏ các bình luận. Mặc dù không hiểu rõ chức năng của nó bắt đầu bằng _fn*(). Nếu có bất kỳ cách nào khác mà không dựa vào các chức năng _fn*() này, cảm ơn!

+0

trong mã nhận xét của bạn, bạn nói rằng bạn muốn làm điều gì đó như 'table.row (i) .data ("id", id); 'nhưng không thể vì DataTables có một hàm' dữ liệu'. Bạn đã thử gói 'table.row (i)' trong một hàm jQuery rồi gọi jQuery 'data' vào đó chưa? –

+2

'table.row (i)' không phải là đối tượng jquery. Bạn không thể mong đợi dữ liệu hoặc chức năng attr để làm việc với nó. Bạn cần bọc nó trước trong hàm jQuery trước khi bạn có thể sử dụng các hàm khác '$ (table.row (i)). Data (" id ", id);' – evolutionxbox

+0

Bạn đã bao giờ giải quyết vấn đề này chưa, hay là vẫn là một vấn đề mở? – davidkonrad

Trả lời

9

Bạn có thể sử dụng rows().nodes() chức năng API, xem dưới đây:

var i = table.row.add([ 
    '', 
    name, 
    target_l, 
    details, 
    panel.html()  
]).index(); 

var id = $("#department_id").val(); 
table.rows(i).nodes().to$().attr("data-id", id); 
+0

Không chắc chắn tại sao, nhưng '.to $()' không hoạt động trên '.node()' đối với tôi. Đã phải sử dụng '$ (table.row (i) .node())' –

+1

@ FelipeLeão Có vẻ như 'to $()' chỉ làm việc với 'nodes()' và không phải 'node()' mà là loại không có giấy tờ. Cách giải quyết của bạn là tốt. –

+0

'.to $() là gì '? – user3287550

Các vấn đề liên quan