从JQuery数据表中删除选定的行

时间:2018-08-31 12:31:53

标签: javascript jquery datatables

如何从使用本地数组存储数据的数据表中删除所选行?这是初始化表格的方式:

    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 :(得分:1)

我认为您可以在here上找到答案

  • 基本上,您必须将行selected = table.rows('.selected').data().toArray();更改为table.rows( '.selected' ).remove().draw();
  • 并删除其他代码。
  • 您也不必担心循环遍历列表,因为table.rows('.selected')获取所有选定类的行,然后remove()为您删除所有行。

编辑:如果dataSet没有自动更新,那么我认为这可能会回答您的第二个查询

$("#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;
});