2016-01-23 3 views
0

Я работаю с datatables, и я могу загрузить данные, используя getJson с сильно типизированными классами и т. Д., И он отлично работает. Пока я не ударил одну загвоздку.динамический json для datatables

Есть моменты, когда я хочу заполнить данные, данные «Я не знаю», но я всегда знаю, что это будет одна строка данных - это просто строка json с динамическим контентом.

Теперь DataTables вы можете просто заполнить таблицу с aaData и aaCol путем присвоения JSon строку к нему, но моя JSON строка содержит столбец и данные IE:

First_name: боб и так далее.

Столбец Datatables будет заполнен с помощью sTitle: Column1 и т. Д. И назначен aaCol.

Кто-нибудь знает о подключаемом модуле, который анализирует строку json в aaCol и aaData для использования с datatables?

+0

Не могли бы вы привести пример «сильно типизированных классов», что вам использование и пример json, который не работает? –

+0

Вот строка json, которая действительна: «[{« DTAP_EXEMPT »: 0.015,« DTAP_FULLY_IMMUNIZED »: 0.985}]« Есть два столбца. Я мог бы создать класс с геттером и сеттер с этими столбцами - проблема в том, что каждый запрос мы не знаем, какие столбцы мы возвращаем, поэтому я хочу динамически заполнять. – dawriter

+0

Хорошо, я понимаю, что столбцы не являются статическими. Но знаете ли вы, какие столбцы присутствуют перед установкой данных в DataTables? В вашем примере вам нужно будет знать, что значение «DTAP_EXEMPT» используется для первого столбца (или второго) и «DTAP_FULLY_IMMUNIZED» для другого столбца. У меня была такая же проблема и у меня было решение (если бы я правильно понял). Вы можете указать для dataTables для извлечения значений из полей объекта –

ответ

0

Я считаю, что вы можете решить вашу проблему, используя этот подход:

$(document).ready(function() { 
    $('#example').DataTable({ 
     "processing": true, 
     "serverSide": true, 
     "ajax": "scripts/objects.php", 
     "columns": [ 
      { "data": "first_name" }, 
      { "data": "last_name" }, 
      { "data": "position" }, 
      { "data": "office" }, 
      { "data": "start_date" }, 
      { "data": "salary" } 
     ] 
    }); 
}); 

В примере выше DataTables использует обработку ServerSide, то Аякс возвращает объект вроде этого:

{ 
    "draw": 1, 
    "recordsTotal": 57, 
    "recordsFiltered": 57, 
    "data": [ 
    { 
     "first_name": "Airi", 
     "last_name": "Satou", 
     "position": "Accountant", 
     "office": "Tokyo", 
     "start_date": "28th Nov 08", 
     "salary": "$162,700" 
    }, ... 

Вы можете также задайте имя столбца, используя свойство «name» внутри спецификации каждого столбца.

Подробный пример приведен ниже link. Если вам нужна дополнительная помощь, я могу сделать код на моей позже сегодня =)

Вы можете проверить это JsFiddle, чтобы понять, как установить имена столбцов

+0

Эта часть, которую я получаю, - но моя проблема - что, если вы не знали названия столбцов? В вашем примере вы уже знаете и определяете их. Но что, если возвращаемые столбцы динамические - я бы хотел разобрать имена столбцов из строки json, а затем заполнил их в столбцах или aaCols: – dawriter

+0

Я сделал JsFidle для вас https://jsfiddle.net/Teles/c1x1qom8/ 3/ –

+0

Это сработало для вас? –

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