我正在使用DataTables.Net JS component从服务器渲染数据(重载在超时时执行)。
如果没有实际更改行,有没有办法避免在ajax.reload()上重建<TR>
?我不希望<TR>
的自定义类消失。
更新
以下是我初始化组件的方法:
myTable = $('#myTable').dataTable(
{
'ajax':
{
'url': 'data', // Something like http://myserver/data
'dataSrc': '' // All data go right in the root of JSON.
}
...
根据DataTable网站上的“多选”示例,我的自定义类如.selected
。
此致
答案 0 :(得分:1)
不幸的是,dataTables会清空每个reload()
上的表格。因此,排除dataSrc
回调中已存在的行是不可能的。
但是你可以自己做AJAX,然后插入新行&#34;手动&#34;如果他们还不存在我假设您正在使用JSON数据源,因此您可以使用JSON.stringify
将现有行与新行进行比较。
以下是使用setInterval
的示例(包括选择):
var table = $('#example').DataTable({
select : true,
columns : [
{ "data" : "id" },
{ "data" : "name" },
{ "data" : "lat" },
{ "data" : "lon" }]
});
function loadData() {
$.getJSON('https://api.myjson.com/bins/14t4g', function(json) {
function rowExists(item) {
for (var i=0;i<table.data().length;i++) {
if (JSON.stringify(table.row(i).data()) == JSON.stringify(item)) return true;
}
return false;
}
json.forEach(function(item) {
if (!rowExists(item)) {
table.row.add(item).draw();
} else {
console.log('row already exists', item);
}
})
});
}
var test = setInterval(function() {
loadData()
}, 1000);
演示 - &gt;的 http://jsfiddle.net/qseeeu43/ 强>