Как удалить строку из Datatable - PullRequest
1 голос
/ 08 января 2020

Я пытаюсь удалить строку из таблицы, если совпадают 3 значения, но у меня возникают некоторые проблемы.

У меня есть следующее:

$(function () {
  $('#st').DataTable({
    "paging": false,
    "lengthChange": false,
    "searching": false,
    "ordering": true,
    "info": false,
    "autoWidth": true,
    "order": [[ 0, "asc" ]],
    "createdRow": function ( row, data, index ) {
      if ( data[1] == data[2] && data[2] == data[3] ) {
              $(row).addClass('table-success');
              $(row).remove();
          }
      }
    });
});

Цвет строки корректно (Я добавил это, чтобы проверить логи c), но это не удаление строки. Я попробовал несколько разных ответов из документов, но все они терпят неудачу. Вышеприведенное не работает автоматически, что не помогает.

Согласно документам, я также попытался выполнить следующее:

var table = $('#st').DataTable({

, а затем попытался удалить следующим образом:

table.row($(row)).remove();

Это не так с jquery.min.js:2 Uncaught TypeError: Cannot read property 'row' of undefined

Строки таблицы создаются следующим образом:

              <?php
                foreach ($vfile as $key => $value) {
                  if (empty($value['latest_version'])) { continue; }
              ?>
                <tr>
                  <td> <?php echo $value['module']; ?> </td>
                  <td> <?php echo $value['latest_version']; ?> </td>
                  <?php foreach ($st_envs as $k => $v) { 
                    $vrs = !empty($value[$v]) ? $value[$v] : 'Not Included';
                    echo "<td>" . $vrs  . "</td>";
                  }
                  ?>
                </tr>
              <?php } ?>

Я довольно новичок в JS и работах, поэтому я немного растерялся, так как с чего начать - есть идеи?

1 Ответ

1 голос
/ 08 января 2020

Вы получаете " Невозможно прочитать свойство 'row' из неопределенного ", потому что table не инициализирован. Api просто еще не передан обратно к ссылке на переменную во время выполнения createdRow.

Но внутри обратных вызовов DT всегда есть this, который на самом деле является экземпляром dataTable (jQuery) API DataTable. Итак

createdRow: function ( row, data, index ) {
  if ( data[1] == data[2] && data[2] == data[3] ) {
    $(row).addClass('table-success')
    this.api().row(row).remove() //<-----
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...