我正在研究化学品数据库网络应用程序。使用DataTables 1.10.16和CakePHP 3.5
Cake正在生成JSON提要。样本如下:
[
{
"id": 1,
"app_id": "ID000001",
"name": "Chromium",
"ecs": [
{
"id": 1,
"value": "123-456-7"
},
{
"id": 32,
"value": "222-333-444"
},
],
"cas": [
{
"id": 1,
"value": "987-654-3"
}
]
},
]
对于某些化学品,有多个EC(JSON中为ecs
)和CAS编号(JSON中为cas
)。
我不知道是否/如何让DataTables遍历这些对象,并使用<br>
标记之类的分隔符将它们输出到相应的列中。
我的表格标记如下:
<table id="substancesTable" class="table responsive display table-striped" cellspacing="0" width="100%">
<thead>
<tr>
<th>Application ID</th>
<th>EC Number</th>
<th>CAS Number</th>
<th>Chemical Name</th>
</tr>
</thead>
</table>
在我的Javascript中,我这样做:
$('#substancesTable').DataTable({
"processing": true,
"serverSide": true,
"searching": false,
"ajax": {
"url" : "/get-substances.json",
"method" : "POST",
"dataSrc":""
},
"columns": [
{ "data": "app_id", "name" : "app_id" },
{ "data": "ecs", "name" : "ec_number" },
{ "data": "cas", "name" : "cas_number" },
{ "data": "name", "name" : "name" },
]
});
这适用于填充&#34;应用程序ID&#34;和&#34;化学名称&#34;列 - 但这是因为JSON中没有简单的1:1映射(没有数组/对象)。
&#34; EC编号&#34;的输出和&#34; CAS号码&#34; columns只是[object Object]
,并且重复了对象的数量。在上面的示例中,此化学品有2个EC编号,因此输出&#34; EC编号&#34;是[object Object],[object Object]
有人可以协助吗?我想通过循环我的JSON并在每个项目之间引入中断来生成输出,例如:
123-456-7<br>222-333-444
答案 0 :(得分:1)
您将需要render
这样的功能:
{
"data": "ecs",
"name": "ec_number",
"title":"EC Number",
"render": function(d,t,r){
return d.map(function(e) {
return e.value;
}).join("<br/>");
}
}
使用JSFiddle here。