我需要在数据表中添加一行,这行应该位于表的顶部。我已经使用了排序插件,但它失败了。
有人能帮我解决这个问题吗?
我需要在数据表中添加一行,这行应该位于表的顶部。我已经使用了排序插件,但它失败了。
有人能帮我解决这个问题吗?
经过一段时间的尝试,我使用内置的order()函数解决了我的表格问题。(无需额外插件)
var table = $('#adapterTable').DataTable();
$('#newButton').on( 'click', function () {
var row = ["<button id='savebutton'>save</button>","<input name='titel'/>"];
table.row.add(row).draw( false );
table.order([1, 'asc']).draw();
table.order([0, 'asc']).draw();
} );
table.order([0, 'asc']).draw();
在我的情况下,表格的排序顺序是服务器返回数据数组的任何顺序。客户端不进行任何额外的排序('ordering'
设置为false
)。为了在客户端将新行添加到数据数组的开头,我执行了以下操作:
table.data()
数据数组let newdata = Array.from(table.data());
newdata.unshift(['my', 'new', 'row']);
table.clear();
for (const row of newdata) {
table.row.add(row);
}
table.draw();
.prepend()
将相同的行添加到表格顶部var employersTable = $('#employersTable').DataTable();
$('#addRow').click(function(){
var row = $('<tr>')
.append('<td>added row</td>')
.append('<td>Test 2</td>')
.append('<td>123</td>')
.append('<td>2014-05-09</td>')
.append('<td>No</td>')
.append('<td>blub</td>')
employersTable.row.add(row);
$('#employersTable tbody').prepend(row);
});
重要(可能)的缺点:当您添加行时,它不会自动分页。
您可以在JSFiddle上查看工作示例。
table = $("table").dataTable() //not DataTable() function
dt = table.api()
obj = {"id":131,"name":" 111 test"}
dt.row.add(obj);
var aiDisplayMaster = table.fnSettings()["aiDisplayMaster"];
irow = aiDisplayMaster.pop();
aiDisplayMaster.unshift(irow);
dt.draw();
$(document).ready(function() {
$('#addRowBtn').on('click', function() {
var t = $('#example').DataTable();
var newRow = t.row.add([]).order( [ 1, 'asc' ] ).draw(false).node();
$(newRow).prependTo('#example tbody');
});
});
$('#addRow').on('click', function () {
var newRow = $('<tr>').append(
$('<td>').html('<input type="text" placeholder="Employee Number" id="emp_number" name="emp_number">'),
$('<td>').html('<input type="text" placeholder="dd" id="name" name="name">'),
$('<td>').html('<select size="1" id="post" name="post"><option value="" selected="selected">Choose Post</option> <% for(var i=0; i<posts.length; i++) {%><option value="<%= posts[i].PostID %>"><%= posts[i].PostName %></option><% } %></select>'),
$('<td>').html('<input type="text" placeholder="Start Time" id="start_time" name="start_time">'),
$('<td>').html('<input type="text" placeholder="End Time" id="end_time" name="end_time">'),
$('<td>').html('<input type="text" placeholder="Hours" id="hours" name="hours" readonly>'),
$('<td>').html('<button>Save</button>')
);
var table = $('#example');
table.find('tbody').prepend(newRow);
});
row
模板存储在一个变量中。你可以获取表格$('table').find('tr:first')
的第一行,然后使用.prepend(rowTemplate)
方法插入模板。 - Sukanya1991