2016-11-18 3 views
0

Я использую данные datatables, и я хотел бы показать значок в столбце (в зависимости от значения в данных столбца). Я написал такой код:DataTables: createdCell не работает при загрузке страницы (после его работы)

$(document).ready(function() { 

var oTable = $("#initiativeTable").DataTable({ 
    "serverSide":true, 
    "processing":true, 
    "searching": false, 
    "ordering": true, 
    "order": [[ 0, "desc" ]], 
    "ajax": '${basePath}/cns/initiative/table.json?teams=${teams}&fields=${fields}&search=${search}', 
    "columns": [ 
       { "data": "id_init" },{ "data": "parent_name_init" },{ "data": "name_cust" },{ "data": "name_init" },{ "data": "code_paf" },{ "data": "name_team" },{ "data": "pa_name_emp" },{ "data": "pgm_name_emp" },{ "data": "pm_name_emp" },{ "data": "id_initstt" },{ "data": "description_contrtype" },{ "data": "description_inittype" },{ "data": "is_revised_init" }] , 
       "columnDefs": [{ "targets": 12, 
         "createdCell": function (td, cellData, rowData, row, col) { 
          if (cellData == 'false') { 
           $(td).html(""); 
          }else{ 
           $(td).html("<span class='glyphicon glyphicon-ok'></span>"); 
          }        
         } 
        } 
}); 
}); 

DataTables работает отлично, но колонка показывает значение данных, а не значок. Если я переупорядочу таблицу или перейду на вторую страницу разбивки на страницы, будет создан файл createdCell и будет показан значок. Он не работает только при первом загрузке страницы. В чем проблема?

Заранее спасибо

Приветствия

Маттео

+1

использовать 'render()' вместо -> https://datatables.net/reference/option/columns.render – davidkonrad

+0

Да, с рендером он работает даже при первой загрузке. Спасибо – Matteo

ответ

0

Синтаксис createdCell находится внутри колонны, проверьте columns.createCell:

columns: [ 

      { 
      data : "name_data", 
      createCell: function(){ 
       //code 
      } 
      } 

] 

Вы можете использовать этот код:

{ 
    "data": "is_revised_init", 
    "createdCell": function (td, cellData, rowData, row, col) { 
         if (cellData == 'false') { 
          $(td).html(""); 
         }else{ 
          $(td).html("<span class='glyphicon glyphicon-ok'></span>"); 
         }        
        } 

} 
+1

Я пробовал, но это не сработало. Я использовал render(), как показано ниже, и он работает. «target»: 12, «render»: function (cellData, type, full, meta) { if (cellData == 'false') { return ""; } else { \t return ""; – Matteo