替换整行数据并刷新

Replace entire row data and refresh

我已经生成了一个基于数据源的数据表,如下所示。我想替换代表一行的元素,然后强制该行使用新数据重新呈现。

我的问题是我只能在编辑行属性时让它工作。但是当我替换整行时,它不起作用。是因为datatables需要引用原始对象吗?

var dataSet = [
    ['Trident','Internet Explorer 4.0','Win 95+','4','X'],
    ['Trident','Internet Explorer 5.0','Win 95+','5','C'],
    ['Trident','Internet Explorer 5.5','Win 95+','5.5','A'],
    ['Trident','Internet Explorer 6','Win 98+','6','A'],
    ['Trident','Internet Explorer 7','Win XP SP2+','7','A'],
    ['Trident','AOL browser (AOL desktop)','Win XP','6','A']
];

$('#example').dataTable( {
    columns: [
        { 
            "title": "Engine"
        },
        { "title": "Browser" },
        { "title": "Platform" },
        { "title": "Version", "className": "center" },
        { "title": "Grade", "className": "center" }
    ],

    data: dataSet
});

var table = $('#example').DataTable();

dataSet[0] = ['x','y','z','4','X'];

console.log(dataSet);

table.row(0).invalidate().draw();

http://jsfiddle.net/y3fnvzad/13/

在这种情况下,我最好使用 table.row(0).data(['x','y','z','4','X']).draw() 吗?

你可以使用这个:

JS

var table = $('#example').dataTable( {
 .....

table.fnUpdate(['x','y','z','4','X'], 0);

您可能还想看看: dataTable fnUpdate row with new value

你说得对,table.row(0).data(['x','y','z','4','X']).draw() 是更新行数据的正确方法。有关详细信息,请参阅 row().data()

变量dataSet是按值传递的,因此之后修改数组元素没有任何效果。