使用新值更新dataTable中的行。

13
我正在使用Datatables,并且在中有这个元素。
<tr class="gradeA even row_selected" id="3692">
  <td class=" sorting_1">3692</td>
  <td class="">koza</td>
  <td class="" title="10:12:30">2013-12-31</td>
  <td class="">2014-02-06</td>
  <td class="">FULL packet</td>
  <td class="">NONE</td>
  <td class="">Name</td>
</tr>

我想使用fnUpdate函数更新第1个和第4个td元素。我尝试仅更新一个td,但它没有更新。
在Chrome中,控制台日志显示以下错误:

Uncaught TypeError: Cannot set property '_aData' of undefined

这是我尝试过的:

 // dynamically update row
 $('#example').dataTable().fnUpdate( ['Zebra'], parseInt('3692'));

3692是需要更新的行的td元素的ID,zebra是需要更改的值。我知道我没有包括要更新哪个单元格,但我不知道如何做到这一点。在datatables api中,给出了以下示例:

oTable.fnUpdate( ['a', 'b', 'c', 'd', 'e'], 1 ); // Row
6个回答

14
请查看这里的文档:http://datatables.net/api 您的问题不完整,因为您需要指定要修改的列(td),但是以下是我会尝试的方法(假设您要更新第二列)。 $('#example').dataTable().fnUpdate('Zebra' , $('tr#3692')[0], 1 ); 第二个参数将是行,第三个参数将是列。
请注意,我传递了一个字符串。
(以上内容有HTML标签,请按原样返回)

1
plus 1 for second parameter will be the row, and the third is the column. - Kishor Pawar

4

我更喜欢这个:

var myDataTable= $('#myDataTableId').DataTable();
var row = myDataTable.row( '#idRow');
myDataTable.cell(row, 2).data("New Text").draw();

注意:

2表示列,单元格在修改的行内。


1
+1 因为在某些数据表版本中(我不知道是哪些版本),fnUpdate 不被支持,会导致错误。 - baron_bartek
1
@baron_bartek 我认为以"fn"开头的函数在新版本的datatables中已经被弃用,但我不知道从哪个版本开始这种情况发生。 - Dani

2

This works for me

var tableRow = $(this).closest('tr').index(); // GET TABLE ROW NUMBER
$('#table').dataTable().fnUpdate('Zebra', [tableRow], 1, false)

0

您不需要指定列。您的问题是在使用行ID时,文档说明第二个参数可以是aoData索引或元素。

确保您的列数是正确的,但是您应该可以像这样做:

 $('#example').dataTable().fnUpdate( ['Zebra'], $('#example tr#3692')[0]);

0
在我的情况下,我想要使用来自后端的对象数据更新整行。参考:
$('#example').dataTable().fnUpdate('Zebra' , $('tr#3692')[0], 1);

我稍微修改了一下,并使用这些代码行来更新整行数据,而无需绘制整个数据表:

// get an selected row/row under edit action
let ele = $("#DTTableID")..dataTable().find('tr.row_selected');

$("#DTTableID").dataTable().fnUpdate(obj, ele);

这里的obj是数据对象,ele是选中的行。

-1

尝试:

$('#datatable').dataTable().fnUpdate(result, $('[data-id=' + idvalue + ']'), 8 );

这是更新列值并添加带有 data-id="行id值" 的表行的最佳方法,没有错误,它运行良好。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接