我使用https://datatables.net/reference/api/rows.add%28%29链接工作,但数据显示为[object,object]
。如何将对象显示为字符串。我用JSON.stringify(obj)
它也没用。
HTML
<table id="exampleTable">
<thead>
<tr>
<th>Year</th>
<th>Month</th>
<th>Savings</th>
</tr>
</thead>
<tbody>
<tr>
<td>2012</td>
<td>January</td>
<td>$100</td>
</tr>
<tr>
<td>2012</td>
<td>February</td>
<td>$80</td>
</tr>
</table>
JS
$('#addRows').click();
var table3 = $('#exampleTable').DataTable();
$('#addRows').on( 'click', function () {
table3.row.add(
[ { "Year": "Tiger Nixon", "Month": "System Architect", "Savings": "$3,120" },
{"Year": "Tiger Nixon", "Month": "System Architect", "Savings": "$3,120" }]
).draw();
});
答案 0 :(得分:14)
我在此FIDDLE中创建了两个样本。
如果要在行中使用对象,则应在数据表init中添加列:
<强> JS 强>
var table3 = $('#exampleTable').DataTable({
data:[{ "Year": "2012", "Month": "January", "Savings": "$100" },
{ "Year": "2012", "Month": "February", "Savings": "$80" }],
columns:[{data: 'Year'},
{data: "Month"},
{data: "Savings"}]
});
但如果您不想这样做,可以在行add
中使用下一个语法<强> JS 强>
table4.rows.add(
[[ "Tiger Nixon", "System Architect","$3,120" ],
["Tiger Nixon", "System Architect", "$3,120" ]]
).draw();
看fiddle它的内容更丰富。
答案 1 :(得分:3)
我也遇到过这个问题 - 我发现文档不太清楚。当我传递自己动态创建的对象数组时,他们在https://datatables.net/reference/api/rows.add()上的示例不起作用。
为了使其正常工作,您必须在实例化DataTables时指定列的名称。
无论如何,以下是一个有效的解决方案。
var DataTable = $('#tableName').DataTable({
iDisplayLength: 15, // number of rows to display
columns: [
{ data: 'id' },
{ data: 'name' },
{ data: 'car' },
]
});
// assume this is a dynamically created array of objects
var persons = [
{
id: 1,
name: 'John',
car: 'Mercedes',
},
{
id: 2,
name: 'Dave',
car: 'BMW',
},
{
id: 3,
name: 'Ken',
car: 'Jeep',
},
];
DataTable.rows.add(persons).draw();
答案 2 :(得分:1)
试试这个`
var data = [
{id : 1, name : 'John'},
{id : 2, name : 'Joe'},
{id : 3, name : 'Mathan'},
{id : 4, name : 'Mani'},
{id : 4, name : 'Karthik'}
];
//初始化数据表
var DataTable = $('#tableName').DataTable({
iDisplayLength: 15,
columns: [
{ data: 'id' },
{ data: 'name' },
]
});
DataTable.rows.add(data).draw();
答案 3 :(得分:0)
我要像在foreach循环中一样返回一个视图,它返回多行。现在,我将在datatable中附加数据表的所有功能。
仅当您获取html格式且仅包含多行格式的数据时,该功能才起作用。
这是我的数据表
$('#SurveyDetails').dataTable({
"scrollY": "500px",
"scrollX": true,
"scrollCollapse": true,
"paging": false,
"jQueryUI": false,
"searching": false,
"autoWidth": false,
});
我要在数据表的滚动条上附加30行。
成功处理ajax:
success: function (data) {
if (!$.trim(data) == '') {
data = data.replace(/^\s*|\s*$/g, '');
data = data.replace(/\\r\\n/gm, '');
var expr = "</tr>\\s*<tr";
var regEx = new RegExp(expr, "gm");
var newRows = data.replace(regEx, "</tr><tr");
$("#SurveyDetails").DataTable().rows.add($(newRows)).draw();
}