Jquery DataTables - 根据行ID更改特定单元格中的数据

时间:2017-02-02 22:51:44

标签: jquery datatables

我正在尝试通过转到特定的表行ID来更改Jquery DataTable中的第5列表数据。默认情况下,我的所有表行的ID都为row<id number>。例如:

<tr id="row147">
  <td>147</td>
  ...

为了尝试更改特定的表格数据单元格,我尝试了类似这样的内容

table.row("#row" + data.job_id).data(variable).draw()

但是这会在每个表数据单元格的整行中写入数据。如何在行中指定表数据单元,并使用DataTables API将其写入?

6 个答案:

答案 0 :(得分:1)

您的代码看起来应该是这样的。添加initComplete:

$(document).ready(function () {
    $("#uiDataTable").DataTable({
        "order": [[1, "asc"]],
        "pagingType": "full",
        "deferRender": true,
        "initComplete": function (settings, json) {
            $('tbody tr').each(function () {
                var nTds = $('td', this);
                var nTrs = $('tr', this);
                //row #  
                if (nTrs.context.id == "4") {
                    $(nTds[0]).text("Changing row 3 column 1");
                    //alert(sBrowser);
                }
            });
        }
    });
});

答案 1 :(得分:1)

我最后通过这篇文章here找到了解决方案。基本上必须给每个<td>一个ID。然后我可以使用table.cell('#td_5_' + data.job_id).data(variable)将新数据写入特定单元格。

答案 2 :(得分:0)

如果您通读row-selector上的文档,则可以这样做 你会注意到它说:

  

还可选择使用cell()和cell())方法从表中选择行

所以,如果你去cell docs

您将看到重载的单元格方法:

cell( rowSelector, columnSelector, [ modifier ] )

对于你的情况:

table.cell("#row" + data.job_id,'').data(variable).draw()

答案 3 :(得分:0)

方法在更改顺序时将不起作用,因为rowIndex是行加载的顺序,而不是当前显示的顺序,例如{{3} }。如果您希望基于表中的当前位置使用它,则最可能使用使用行索引的jQuery-

$('#yourTableId tbody tr:eq(rowIndex) td:eq(columnIndex)').text('yourvalue');

答案 4 :(得分:-1)

var rowId = "row" + data.job_id;
var element = document.getElementById(rowId).cells;
element[index_of_column].innerHTML = "New content";`

答案 5 :(得分:-1)

$('#'+table).find('tr#'+rowId).find('td:eq(colNum)').html(newValue);