获取选定的行id jquery数据表行选择

get selected row id jquery datatable row selection

本文关键字:jquery 数据表 行选 选择 id 获取      更新时间:2023-09-26

我无法获取选定的行id。我正在使用数据表行选择。我在控制台日志中得到[],["]。我已经在SO上寻找其他问题,并尝试过,但没有帮助

我的javascript代码是

  $(document).ready(function () {
    var selectedids = [];
    var otable = $('#Table1').DataTable({
        "bSort": false,
        "rowCallback": function (row, data) {
            if ($.inArray(data.DT_RowId, selectedids) !== -1) {
                $(row).addClass('selected');
            }
        }
    });
    $('#Table1 tbody').on('click', 'tr', function () {
        var id = this.id;
        var index = $.inArray(id, selectedids);
        var ids = $.map(otable.rows('.selected').data(), function (item) {
            return item[0]
        });
        console.log(ids)
        if (index === -1) {
            selectedids.push(id);
            console.log(selectedids);
        } else {
            selectedids.splice(index, 1);
        }
        $(this).toggleClass('selected');
    });
});

我正在用来自mvc 中控制器的json数据填充我的数据表

    $('#ID').change(function () {
    $("#t1 tbody tr").remove();
    $.ajax({
        type: 'POST',
        url: '@Url.Action("")',
        dataType: 'json',
        data: { id: $("#ID").val() },
        success: function (data) {
            var items = '';
            $.each(data, function (i, item) {
                var rows = "<tr>"
               + "<td>" + item.id + "</td>"
                + "<td>" + item.yyy + "</td>"
                + "<td>" + item.aaa + "</td>"
                + "<td>" + item.eee + "</td>"
                + "<td>" + item.yyygg + "</td>"
                + "</tr>";
                $('#Table1 tbody').append(rows);
            });
        },
        error: function (ex) {
            var r = jQuery.parseJSON(response.responseText);
            alert("Message: " + r.Message);
            alert("StackTrace: " + r.StackTrace);
            alert("ExceptionType: " + r.ExceptionType);
        }
    });
    return false;
});

如果您使用dataTables选择扩展,您可以省去很多痛苦:

var table = $('#example').DataTable({
   select: {
      style: 'multi'
   }
}) 
var selectedIds = [];
table.on('select.dt', function(e, dt, type, indexes) {
   selectedIds.push(indexes[0]);
   console.log(selectedIds);
})
table.on('deselect.dt', function(e, dt, type, indexes) {
   selectedIds.splice(selectedIds.indexOf(indexes[0]), 1);
   console.log(selectedIds);
})

演示->http://jsfiddle.net/0w1p7a3s/