2017-01-17 12 views
0

Я задал вопрос о Bootstrap Tables, но пока я перешел в Datatables, поскольку я чувствовал себя заблокированным. Моя проблема, однако, та же.Datatables с вложенным массивом

Ни один из них не может легко обрабатывать вложенные результаты JSON. Например, если я выберу «поле: автор», он обрабатывает следующее как «[Объект объекта], [Объект объекта]».

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

Я могу выбрать результаты по отдельности, скажем, «поле: автор [,] .family», который возвращает список, как «Обама, Обама». Но мне нужен вывод, например «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, который я разработал. Я выполняю персонализированный рендеринг для столбца Author.

$(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

Есть способы загрузки данных непосредственно в Datatables, см. Ссылку https://datatables.net/examples/data_sources/ –

+0

. Решено на форуме Datatables: '' data ":" author ", " render ": функция (данные, тип, полный) { return $ .map (данные, функция (d, i) { return d.given + '' + d.family; }) .join (',
'); } ' – east1999

Смежные вопросы