数据表fnUpdate在由于分页而不在视图范围内的行上?

时间:2015-02-03 15:26:35

标签: jquery pagination datatables

以下函数适用于我的数据表当前页面上可见的行。如何让它在目前由分页隐藏的行上工作?

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);

2 个答案:

答案 0 :(得分:2)

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

这是ya 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);
}

希望它可以帮到你

答案 1 :(得分:2)

由于DataTables 1.10+在API着陆页本身上可能不支持fnGetNodes() mentioned,现在您可以使用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();