由于一些非常有趣的原因,我无法使用datatable向一个简单的表添加多行。事情是这样的
我正在使用datatable添加4行到html表,特别是使用table.rows.add
方法(链接)。
下面是它的简单html代码,其中已经存在一个示例行。
<table id="items-table" cellspacing="0" cellpadding="0">
<thead>
<tr>
<th>ID</th>
<th>Item Name</th>
</tr>
</thead>
<tbody>
<tr>
<td>0</td>
<td>Sample Object</td>
</tr>
</tbody>
</table>
这是它的javascript代码。
// create a dataTable
var itemsTable = $("#items-table").DataTable({
paging: false,
searching: false
});
// add data as rows. Make sure to call the ```.draw``` method.
itemsTable.rows.add([{
"id": "1",
"item": "Aardvark"
}, {
"id": "2",
"item": "Red Bull"
}, {
"id": "3",
"item": "Jack in the Box"
}, {
"id": "4",
"item": "Chair"
}]).draw();
错误说:使用DataTable warning: table id=items-table -Requested unknown parameter'0'表示第1行第0列。有关详细信息,请参阅此错误。
- 的datatable 1.10.12 jQuery v3.1.1
这里出了什么问题?
您需要指定列。
// create a dataTable
var itemsTable = $("#items-table").DataTable({
paging: false,
searching: false,
columns: [{data: 'id'}, {data: 'item'}]
});
一种解决方法是将所有数据放在一个常规表中,然后将其初始化为dataTable,而不是添加单独的行。
你可能想要添加"fnDrawCallback": function
在你的Datatable初始化,如果你正在使用下划线模板或类似的,并使用function
绑定事件到行表后重新绘制。另一种可能的方法是使用数据表提供的order.dt
或search.dt
或page.dt
事件来做到这一点。可能像:
function bind_feedback_behavior(){
$('table.program-status')
.on( 'order.dt', function () { enable_feedback_behavior(); } )
.on( 'search.dt', function () { enable_feedback_behavior(); } )
.on( 'page.dt', function () { enable_feedback_behavior(); } );
}