dataTables 将其行保存在索引数组中,并且没有用于在特定索引处添加新行或更改行的 API 方法index()
。
这实际上很有意义,因为典型的 dataTable 总是按数据排序/排序或过滤,而不是静态索引。当您从服务器接收数据,或者想要将数据传递给服务器时,您也永远不会使用静态客户端index()
。
但是,如果您考虑一下,您仍然可以重新排序行,并通过代码非常容易地在特定索引处插入一行,只需重新排序数据即可。添加新行时,将数据从最后一行(插入的行)交换到倒数第二行,然后从倒数第二行交换数据到倒数第三行,依此类推,直到到达您想要的索引插入行。
[0][1][2][3][4->][<-newRow]
[0][1][2][3->][<-newRow][4]
[0][1][2->][<-newRow][3][4]
例如,在单击鼠标的索引处插入一个新行:
$("#example").on('click', 'tbody tr', function() {
var currentPage = table.page();
//insert a test row
count++;
table.row.add([count, count, count, count, count]).draw();
//move added row to desired index (here the row we clicked on)
var index = table.row(this).index(),
rowCount = table.data().length-1,
insertedRow = table.row(rowCount).data(),
tempRow;
for (var i=rowCount;i>index;i--) {
tempRow = table.row(i-1).data();
table.row(i).data(tempRow);
table.row(i-1).data(insertedRow);
}
//refresh the current page
table.page(currentPage).draw(false);
});
演示 -> http://jsfiddle.net/mLh08nyg/