Javascript DataTables搜索和排序不适用于动态添加的数据
我有一个DataTable,需要从AJAX调用中动态插入/追加数据。在这种数据表上进行搜索和排序似乎没有达到预期效果。这是我的 代码:Javascript DataTables搜索和排序不适用于动态添加的数据,javascript,jquery,datatables,datatables-1.10,Javascript,Jquery,Datatables,Datatables 1.10,我有一个DataTable,需要从AJAX调用中动态插入/追加数据。在这种数据表上进行搜索和排序似乎没有达到预期效果。这是我的 代码: $('#example').DataTable( { "iDisplayLength": 10, "lengthMenu": [[10, 25, 50, -1], [10, 25, 50, "All"]], "aaData": md, "aaSorting": [[1, 'asc']],
$('#example').DataTable( {
"iDisplayLength": 10,
"lengthMenu": [[10, 25, 50, -1], [10, 25, 50, "All"]],
"aaData": md,
"aaSorting": [[1, 'asc']],
"createdRow": function (row, data, index) {
$('td', row).eq(0).append('<u><a target="_blank" href="' + data["Data"][0].Link + '">' + data["Data"][0].Value + '</a></u>');
$('td', row).eq(1).append(data["Data"][1].Value);
$('td', row).eq(1).prop('title', data["Data"][1].Value);
for (var i = 2; i < data["Data"].length; i++) {
if (data["Data"][i].Value == "green") {
$('td', row).eq(i).addClass('highlight1');
$('td', row).eq(i).append(data["Data"][i].Value);
}
else if (data["Data"][i].Value == "red") {
$('td', row).eq(i).addClass('highlight3');
$('td', row).eq(i).append(data["Data"][i].Value);
}
else if (data["Data"][i].Value == "blue") {
$('td', row).eq(i).addClass('highlight2');
$('td', row).eq(i).append(data["Data"][i].Value);
}
else{
$('td', row).eq(i).append(data["Data"][i].Value);
}
}
},
"scrollX": true,
"scrollCollapse": true,
"fixedColumns": {
"leftColumns": 2,
},
"sScrollXInner": "150%",
"fixedHeader": true,
"columnDefs": [{
"defaultContent": "",
"targets": "_all",
"data": null,
"render": {
// "_":spData[0].Cells[2].Value,
}
}],
} );
$('#示例')。数据表({
“iDisplayLength”:10,
“长度菜单”:[[10,25,50,-1],[10,25,50,“全部”],
“aaData”:md,
“aaSorting”:[[1,‘asc']],
“createdRow”:函数(行、数据、索引){
$('td',行).eq(0).append('');
$('td',row).eq(1).append(data[“data”][1].Value);
$('td',row).eq(1).prop('title',data[“data”][1].值);
对于(变量i=2;i
对这个问题有什么解决方案或想法吗 我不相信
createdRow
在做你想做的事。根据数据表:
当创建了TR元素(并且插入了所有TD子元素)或使用DOM源注册时,将执行此回调,从而允许操纵TR元素
您的
子元素正在由createdRow
呈现,搜索和排序功能不知道它们的存在
如果要在初始化了
DataTable()
之后添加行,则应该使用row.add()
。关于它的更多信息可以在DataTable中找到。但是这里有一个基于原始链接的更新,使用row.add()
将您的行添加到表中,允许搜索和排序现在可以对它们进行操作。谢谢@Jeremy Southard!这个解决方案对我有效!