jQuery DataTables загружает массив объектов на стороне клиента - PullRequest
3 голосов
/ 06 июля 2011

Я использую функцию .data () в jQuery, чтобы прикрепить набор записей, возвращаемых с сервера, к элементу DOM на моей странице. Записи хранятся в виде массива объектов. Код выглядит следующим образом:

    //Attached returned data to an HTML table element
    $('#measTable').data('resultSet', resultSet);

    //Get stored data from HTML table element
var results = $('#measTable').data('resultSet');

//Construct the measurement table
data_table = $('#measTable').dataTable({
    "bJQueryUI": true,
    "sPaginationType": "full_numbers",
    "bProcessing": true,
    "bDeferRender": true,
    "aaData": [ results ],
    "aoColumns": [
                { "mDataProp": "Field1" },
                { "mDataProp": "Field2" },
                { "mDataProp": "Field3" },
                { "mDataProp": "Field4" }
            ]
});

Затем я извлекаю данные из элемента и продолжаю загружать их в таблицу данных. Но это, похоже, не работает и всегда возвращает с ошибкой Запрошенный неизвестный параметр "Field1" из источника данных в строке 0 . Можно ли загрузить данные в таблицы данных таким образом?

UPDATE:

Вот пример массива результирующих объектов

results = 
    0: Object
       Field1: "2011/04/23"
       Field2: 8
       Field3: "Hello"
       Field4: "World"
       __proto__: Object
    1: Object
       Field1: "2011/03/25"
       Field2: 6
       Field3: "Hello"
       Field4: "Everyone"
       __proto__: Object
...etc.

Ответы [ 3 ]

5 голосов
/ 06 июля 2011

Аллан, разработчик DataTables, смог ответить на мой вопрос в следующем посте на форуме DataTables . Если ссылка не работает, проблема заключается в простой синтаксической ошибке.

Вместо "aaData": [ results ], должно быть "aaData": results,.

Спасибо за помощь, Аллан.

1 голос
/ 06 июля 2011

Хорошо, aaData (как следует из названия венгерская нотация ) ожидает массив массивов, поэтому, если вы выбираете ему массив объектов, именно поэтому он жалуется.

0 голосов
/ 22 мая 2014

Добавьте к своему определению следующее:

$('#measTable').dataTable({
    ...
    "columns": [
        { "data": "field1" },
        { "data": "field2" },
        { "data": "field3" }
    ]
});

Вы должны сопоставить столбцы таблицы с массивом columns .

Вот и все!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...