2016-11-17 3 views
0

jquery.dataTables.min.js: DataTables 1.10.12DataTables: JSON не определен в Initcomplete()

Мне нужно, чтобы получить доступ к строкам таблицы после загрузки данных (deferred). И я не могу, потому что jsonundefined для меня внутри initComplete функция. Несмотря на то, что моя таблица загружена, и я вижу все данные. Кроме того, внутри функции есть settings.

Почему? Я забыл какой-то вариант?

Мой код:

var data_table = task_submit_table.DataTable({ 
    "initComplete": function (settings, json) { 
     console.log(json); 
    }, 
    "processing": true, 
    "serverSide": true, 
    "deferRender": true, 
    "deferLoading": 0, 
    "ordering": true, 
    "order": [[ 0, "desc" ]], 
    "ajax": { 
     "url": "get_task_list/", 
     "type": "POST", 
     "dataType": "json" 
    }, 
    "columns": [ 
     {"title": "Id", "data": "id"}, 
     {"title": "Date", "data": "date"}, 
     {"title": "Project Id", "data": "project_id"}, 
     {"title": "Project Name", "data": "project_name"}, 
     {"title": "project", "data": "biobank_project"}, 
     {"title": "#Hashes", "data": "nhashes"}, 
     {"title": "#Success", "data": "nsuccess"}, 
     {"title": "#Fail", "data": "nfail"}, 
     {"title": "Status", "data": "status"}, 
     {"title": "Report", "data": null}, 
     {"title": "", "data": null}, 
     {"title": "", "data": null} 
    ], 
    "columnDefs": [ 
     { 
     "targets": [0], 
     "visible": false, 
     "searchable": true 
     }, 
     { 
     "targets": [2], 
     "visible": false, 
     "searchable": true 
     }, 
     { 
     "targets": -3, 
     "data": null, 
     "defaultContent": "<form id='tool-export' method='post' action='export/'>"+ 
      "<a href='#' id='export' class='btn btn-default export-link'>export</a></form>" 
     }, 
     { 
     "targets": -2, 
     "data": null, 
     "defaultContent": "<a href='#' id='task-delete' class='btn btn-default task-delete-link'"+ 
      "data-toggle='modal' data-target='#confirm_modal'>delete</a>" 
     }, 
     { 
     "targets": -1, 
     "data": null, 
     "defaultContent": "<a href='#' id='task-restart' class='btn btn-default task-restart-link'"+ 
      "data-toggle='modal' data-target='#confirm_modal'>restart</a>" 
     } 
    ], 
    "dom": "<\"dt-btn-floatLeft\"l><\"dt-btn-floatRight\"B><\"dt-btn-clear\">rtip", 
    "buttons": [ 
     { 
     "title": "Refresh", 
     "text": "Refresh", 
     "action": function() { 
      data_table.draw(); 
     } 
     } 
    ] 
    }); 
    data_table.draw(); 

В интерфейсе таблица выглядит следующим образом: enter image description here

+0

Попробуйте изменить '' initComplete "' to '" fnInitComplete "' –

+0

Нет успеха. Есть данные настроек, но json все еще не определен. – trex

ответ

0

Возможно, вам захочется использовать функцию drawCallback, которая будет выполняться каждый раз, когда ваша таблица будет полностью нарисована.

Так это будет выглядеть следующим образом:

"drawCallback": function(settings) { 
    // You use this API object to get the data from the displayed data set. 
    var api = this.api(); 
} 

Это drawCallback будет выполняться каждый раз, когда сетка перерисован так далее: сортировка, фильтрация, пейджинг, ajax.reload() и т.д. Если в качестве функции Initcomplete Я считаю, что только один раз. https://datatables.net/reference/option/drawCallback

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