2017-01-17 50 views
0

我提出了一个关于Bootstrap Tables的问题,但同时我转移到Datatables,因为我感觉被阻塞。然而,我的问题是一样的。具有嵌套数组的数据表

这两者都不能轻松处理嵌套的JSON结果。例如,如果我选择“field:author”,它会将下列内容处理为“[Object Object],[Object Object]”。

"author": [ 
     { 
      "family": "Obama", 
      "given": "Barack" 
     }, 
     { 
      "family": "Obama", 
      "given": "Michelle" 
     } 

我可以单独选择结果,比如说“field:author [,] .family”,它返回一个像“Obama,Obama”这样的列表。但是我想要一个输出,比如“given + family1,given + family2,..”。

+1

datatables可以很容易[处理嵌套json](https://editor.datatables.net/examples/advanced/deepObjects.html)。也许如果你发布了你的数据表代码,有人可能会帮助你。你的问题是什么? – markpsmith

+0

不是付费插件吗? – east1999

+0

Gaa抱歉,我粘贴了错误的链接! [https://datatables.net/examples/ajax/deep.html](https://datatables.net/examples/ajax/deep.html) – markpsmith

回答

0

您可以使用自定义渲染。 DataTables允许您为每列定义自定义渲染。

这是我制定的sample。我正在为作者列进行自定义渲染。

$(document).ready(function() { 
var dataSet = [ 
    { "name": "How to DataTables", "author": [{ "firstname": "jack", lastname: "d" }, { "firstname": "dick", lastname: "j" }] }, 
    { "name": "How to Custom Render", "author": [{ "firstname": "bill", lastname: "g" }, { "firstname": "scott", lastname: "g" }] } 
]; 

$('#example').DataTable({ 
    data: dataSet, 
    columns: [ 
     { title:"Book Name", 
      data: "name" }, 
     { 
      title: "Authors", 
      data: "author", 
      render: function(data, type, row) { 
       //return data.length; 
       var txt = ''; 
       data.forEach(function(item) { 
        if (txt.length > 0) { 
         txt += ', ' 
        } 
        txt += item.firstname + ' ' + item.lastname; 
       }); 
       return txt; 
      } 
     } 
    ] 
}); 
}); 
+0

好吧,这个工程,但我不知道如何使用它与JSON文件。我需要将JSON输入转换为我可以随后使用并交换的变量。 – east1999

+0

有几种方法可以直接将数据加载到数据表中,请参阅此链接https://datatables.net/examples/data_sources/ –

+0

已解决在Datatables论坛中: '“data”:“author”, “render”:函数(数据,类型,完整)返回$ .map(data,function(d,i){ return d.given +''+ d.family; }).join(',
'); }' – east1999