我正在尝试通过转到特定的表行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将其写入?
答案 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)
datatables的cell方法在更改顺序时将不起作用,因为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);