2015-06-08 25 views
0

我通过使用jQuery append函数向表体中填充行这工作正常,但是当我尝试从表中搜索任何数据,然后表被清除。DataTable()。ajax.reload()不重装表

这是我的代码。

for (i = 0; i < mapping.length; i++) { 
    var tr = $('<tr>' + '<td>' + ' <input type="checkbox" ' 
      + ' onchange="selectItem(this);" ' 
      + (mapping[i]['selected'] == true ? "checked" : "") 
      + ' data-el_id="' + mapping[i]['id'] + '">' 
      + ' </td>' + ' <td>' + mapping[i]['name'] + ' </td>' 
      + ' <td>' + mapping[i]['itemName'] + ' </td>' + ' <td>' 
      + mapping[i]['url'] + ' </td>' + ' </tr>'); 
    $("#tableBody").append(tr); 
} 
+1

请显示数据表初始化代码 – markpsmith

+0

我从服务器获取json数组,然后遍历它以将行添加到表中。 – Apollo

+0

迭代它的Insead,你可以直接填充它吗? [https://www.datatables.net/examples/data_sources/ajax.html](https://www.datatables.net/examples/data_sources/ajax.html) – markpsmith

回答

1

你需要经过数据表API,以便插入行。我猜你的数据项目如下:

{ 
    "selected": true, 
    "id": 42, 
    "name": "test", 
    "itemName": "item" 
} 

然后,如果你初始化你这样的表:

var table = $('#example').DataTable({ 
    columns : [ 
     { data: 'selected', 
      render: function (data, type, full, meta) { 
       var input = '<input type="checkbox" onchange="selectItem(this);" '; 
       input += data == true ? "checked" : ""; 
       input += ' data-el_id="' + full.id + '">'; 
       return input 
      } 
     }, 
     { data: 'name' }, 
     { data: 'itemName' } 
    ] 
}); 

您可以在一个循环中插入的所有行:

for (i = 0; i < mapping.length; i++) { 
    table.row.add(mapping[i]).draw(); 
} 

小演示 - >http://jsfiddle.net/fu0r4oba/

+0

感谢您的回复,这是我一直在寻找的东西因为,它解决了我的问题。 – Apollo

0

您应该使用DataTable.row.add()。 例子:

$yourDataTables.row.add([ 
counter + '.1', 
counter + '.2', 
counter + '.3', 
counter + '.4', 
counter + '.5']).draw();