2014-03-13 34 views
2

數據表被定義爲添加行中的jQuery數據表

var oTable = $('#table1').dataTable({ 
    'aaData': [ 
       ['John', 'ABC', '$90000'], ['Doe', 'XYZ', '$100000'], ['Alan', 'PQR', '$110000'] 
       ], 
    'aoColumns': [ 
       {'sTitle': 'Name'}, {'sTitle': 'Company'}, {'sTitle': 'Salary'} 
    ] 
}); 

空行被添加作爲

oTable.fnAddData([' ', ' ', ' ']); 

然而,這增加了該表的底部。有沒有一種方法可以在所選行的下方/上方精確添加。

回答

4

認爲你太急於接受你不能做你想做的事情:)當然這是可能的,但很難弄清楚在哪些情況下。問題不是很具體。下面的代碼插入一個新行只是你點擊最後一行之後:

var dataTable; 
var options = { 
    bSort: false, 
    bPaginate: false 
}; 

function initDataTable() { 
    dataTable = $('#example').dataTable(options); 
} 

function attachClickHandler() { 
    $("#example tbody tr").click(function(event) { 
     var index=$(this).index(); 
     $("#insert").text('insert a row below the row you just clicked ('+index+')').attr('index',index).show(); 
    }); 
} 

$("#insert").click(function() { 
    var index=$(this).attr('index'); 
    var newRow = '<tr>'+ 
     '<td>new</td>'+ 
     '<td>new</td>'+ 
     '<td>new</td>'+ 
     '<td>new</td>'+ 
     '<td>new</td>' + 
     '</tr>'; 
    dataTable.fnDestroy(); 
    $("#example tbody tr").eq(index).after(newRow);  
    initDataTable(); 
    attachClickHandler(); 
}); 

initDataTable(); 
attachClickHandler(); 

的想法是新行插入到底層DOM表,然後當它完成重新初始化數據表。它也可以通過排序工作,但爲了演示目的,我將整理關閉。正如@scottysmalls所提到的那樣,dataTables實際上是對所有內容進行排序,因此新插入的行將立即被排序,而且看起來好像沒有插入正確。

觀看演示 ​​- >http://jsfiddle.net/2AqQ6/