Javascript 更新行后,DataTable不会重新绘制

Javascript 更新行后,DataTable不会重新绘制,javascript,jquery,datatables,Javascript,Jquery,Datatables,我正在使用库创建一个具有额外功能的表。我想实现的是,用户可以选择行,然后按下按钮。这将调用服务器,执行一些操作,并相应地更新行 但是,在对要更改的行进行迭代并设置其值之后,重新绘制表实际上不会更新其值。我更新数据对象,使缓存无效,并调用table.draw()。这与上一个例子非常相似 我已经为这个问题创建了一个。该按钮将更新选定行的日期对象,并重新绘制表格,但不会更新表格中的数据。核心JS代码: $('#updateRow').click(function() { //Get the t

我正在使用库创建一个具有额外功能的表。我想实现的是,用户可以选择行,然后按下按钮。这将调用服务器,执行一些操作,并相应地更新行

但是,在对要更改的行进行迭代并设置其值之后,重新绘制表实际上不会更新其值。我更新数据对象,使缓存无效,并调用
table.draw()
。这与上一个例子非常相似

我已经为这个问题创建了一个。该按钮将更新选定行的日期对象,并重新绘制表格,但不会更新表格中的数据。核心JS代码:

$('#updateRow').click(function() {
    //Get the table
    var table = $('#example').DataTable();
    //Iterate over selected rows
    var rowData = table.rows({
        selected: true
    }).every(function() {
        //For every selected row, update startDate
        var d = this.data();
        d.startDate = "01/01/2017";
        console.log('Set startDate of ' + d.name + ' to ' + d.startDate);
        //Invalidate the cache
        this.invalidate();
    });
    //Re-draw the table
    table.draw();
});

我从你的JSFIDLE中找到了解决方案。以下是来自fiddle的相关片段


基本上,通过API您可以获取单元格对象本身,并使用.data()修改内容。在您的版本中,您实际上没有获得特定的单元格对象,而是将行的数据内容复制到一个变量,并对其进行了修改。

尝试使用“销毁”:true@IvanBarayev似乎没有任何区别,sadlyI发现如果DataTable有上述数据支持,那么更新单元格本身有点奇怪。尤其是因为他们文档中的示例也会编辑数据并重新绘制。但它解决了问题!非常感谢。
var rowData = table.rows({
    selected: true
}).every(function(rowIdx) {
    var colIdx = 4; // startDate is the fifth column, or "4" from 0-base  (0,1,2,3,4...)
    table.cell( rowIdx, colIdx).data('01/01/2017').draw();
});