Удаленные выбранные строки из JQuery Datatables - PullRequest
0 голосов
/ 31 августа 2018

Как удалить выбранные строки из таблиц данных, которые используют локальный массив для данных? Вот как я инициализировал свою таблицу:

    var selected = Array();
    var dataSet = [];
    var rowItem = "";
    $(document).ready(function () {
        var table = $("#table").DataTable({
            "data": dataSet,
            "filter":false,
            "language": {
                "search": "",
                "searchPlaceholder": " Search"
            },
            "select": {
                "style": 'multi'
            },
            "ordering": true,
            "lengthChange": false,
            "columns": [
               { "title": "Name"},
            ],
            "responsive": true,
            "processing":true,
        }).columns.adjust()
        .responsive.recalc();
        new $.fn.dataTable.FixedHeader(table);

Вот как я пытаюсь удалить выбранные строки из моих таблиц:

      $("#roleSection").on("click","#removeRole",function (e) {
            selected = table.rows('.selected').data().toArray();
            console.log(selected);
            $.each(selected, function (id, value) {
                console.log(value);
                dataSet.splice($.inArray(value, dataSet), 1);
                table.row(selected).remove().draw();
            });
            console.log(dataSet);
            return false;
        });

По какой-то причине не удаленные элементы удаляются, и таблица вообще не обновляется.

1 Ответ

0 голосов
/ 31 августа 2018

Я думаю, что вы можете найти ответ более здесь

  • Как правило, вы должны изменить свою строку selected = table.rows('.selected').data().toArray(); на table.rows( '.selected' ).remove().draw();
  • И удалите дополнительный код.
  • Вам также не нужно беспокоиться о циклическом просмотре списка, так как table.rows('.selected') получает все строки с выбранным классом, а затем remove() удаляет их все за вас.

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

$("#delete").on("click", function (e) {
  let newDataSet = [];
  table.rows( '.selected' ).remove().draw();
  table.rows().every( function ( rowIdx, tableLoop, rowLoop ) {
    let row = this;
    newDataSet.push(row.data());
  });
  dataSet = newDataSet;
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...