DataTable重新加载后,大多数函数返回null

时间:2014-05-12 06:40:31

标签: javascript jquery datatable

重新加载dataTable后,我收到一个奇怪的错误,大多数函数返回null。我尝试table.fnDestroy然后table.datatable(),但没有运气。

var oTable = $('#sample_table').dataTable();

var nRow = $(this).parents('tr')[0];
var aData = oTable.fnGetData(nRow); //works

表重新加载后

var nRow = $(this).parents('tr')[0];
var aData = oTable.fnGetData(nRow); //returns null

以下是显示问题的测试用例:JSFiddle

任何想法?

感谢。

1 个答案:

答案 0 :(得分:1)

DataTables在内部跟踪数据,因此它不知道对表元素进行的外部更改。使用提供的API将数据重新加载到DataTables中。

我会使用一些选项初始化DataTables,这些选项指定如何使用mRender回调呈现Edit列:

var oTable = $('#sample_editable_1').dataTable({
    "aoColumnDefs": [{
        "aTargets": [4],
        "mRender": function (data, type, full) {
            return '<a class="edit" href="javascript:;">Edit</a>';
        }
    }]
});

现在在你的重载回调中,你可以使用fnClearTable和fnAddData代替替换表的主体:

$('body').on('click', '#reload', function () {
    //this is where ajax will be added
    var theData = ['New', 'New', 'New', 'New', null];
    var theTable = $('#sample_editable_1').dataTable();
    theTable.fnClearTable();
    theTable.fnAddData(theData);
});