2017-01-17 51 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