2016-11-01 2 views
5

Я пытаюсь прочитать data() из ячейки в datatable, у которой есть кнопка внутри, но я получаю ошибку en.Невозможно прочитать свойство «_aData» неопределенного (...) - Datatables

Это мое Datatable определение:

$("#example").DataTable({ 
       destroy: true, 
       "columnDefs": [{ 
        orderable: false, 
        targets: 0 
       }], 
       "columns": [ 
        { 
         "data": "slno", 
         "fnCreatedCell": function (nTd, sData, oData, iRow, iCol) { 
          $(nTd).html('<a href="AddNewTicket.aspx?subjectID=' + oData.subjectID + '&subject_id=' + oData.subject_id + '&serviceID=' + oData.crm_services_id + '&severityID=' + oData.severityID + '&statusID=' + oData.statusID + '&callerID=' + '66355356' + '">' + oData.slno + '</a>'); 
         }, 
        }, 
        { "data": "status_message" }, 
        { "data": "crm_services_id" }, 
        { "data": "subject_id" }, 
        { "data": "severity_id" }, 
        {"data": "user_id" }, 
        { "data": "status_id" }, 
        { 
         "data": "caller_number", 
         "fnCreatedCell": function (nTd, sData, oData, iRow, iCol) { 
          $(nTd).html('<button class="btn btn-primary" id= "' + oData.subjectID + '">Call Customer</button>'); 
         }, 
        } 
       ], 
       select: { 
        style: 'os', 
        selector: 'td:first-child' 
       }, 
       "data": response, 
       "sDom": '<"top">tip' 
      }); 

А вот где я пытаюсь извлечь данные:

var table = $("#example").DataTable(); 
     $('#example tbody').on('click', 'button', function() { 
      var subjectID = $(this).attr('id'); 
      var thisData = table.row($(this).parents('tr')).data(); 
      var userID = thisData[7]; 
      sendCallRequest(subjectID, userID); 
     }); 

Здесь ошибка я получаю:

Невозможно прочитать свойство '_aData' of undefined (...)

Любые предложения, пожалуйста?

+0

Привет, вы решили это? – NineCattoRules

ответ

4

Попробуйте отменяя событие для ваших кнопок, прежде чем повторно назначить их:

var table = $("#example").DataTable(); 

    $('#example tbody').off('click'); 

    $('#example tbody').on('click', 'button', function() { 
     var subjectID = $(this).attr('id'); 
     var thisData = table.row($(this).parents('tr')).data(); 
     var userID = thisData[7]; 
     sendCallRequest(subjectID, userID); 
    }); 

Почему я предлагаю это: у меня есть очень похожая проблема, где DataTables не в состоянии назвать событие rowReorder. Я также создаю свою таблицу через AJAX/динамически (что вы, похоже, тоже делаете), поэтому, очевидно, мой прослушиватель событий (в моем случае для table.on ('row-reorder')) был связан несколько раз. После первого удаления прослушивателя событий и чтения его, наконец, я получил это для работы.

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