Datatables fnUpdate 在由于分页而看不见的行上?

Datatables fnUpdate on a row that is out of view due to pagination?

以下函数在我的数据表当前页面上可见的行上运行良好。我如何让它在当前被分页隐藏的行上工作?

var table = $('.datatable').dataTable();
var row = table.fnGetPosition($('#'+data.id).closest('tr')[0]);
var value = table.fnGetData(table.fnGetPosition($('#'+data.id).closest('tr')[0]),11);
if (value == '') {
    value = cid;
} else {
    value = value+','+cid;
}
table.fnUpdate(value, row, 11);

您可以使用 fnGetNodes() 实现此目的,这里是对文档的引用 https://datatables.net/api

这是 fiddle 上的一个例子 http://jsfiddle.net/mxfvLjnb/

我把代码放在这里只是为了更好地参考

var oTable = $('#example').dataTable({"sPaginationType": "full_numbers"});

var rows = oTable.fnGetNodes();
for(var i=0;i<rows.length;i++)
{
    oTable.fnUpdate('X', rows[i], 4);
}

希望对你有帮助

因为 DataTables 1.10+ 可能不支持 fnGetNodes() 作为 mentioned on the API landing page itself, instead now you can use rows().nodes()

要更新特定行,您可以使用 row-selector 然后 要更新该特定行的特定单元格,您可以使用 cell().data()

综合上述修改,您的示例代码更改为以下内容:

//Notice the 'd' replaced by 'D' in dataTable() for Datatables v1.10+
var table = $('#example').DataTable();
var row = table.row('#' + data.id).node();
var value = table.cell(row, 11).data();

if (value == '') {
  value = cid;
}
else {
  value += ',' + cid;
}
table.cell(row, 11).data(value).draw();