获取选定的行id jquery datatable行选择

时间:2022-09-17 10:50:16

i cannot get selected row id. I'm using datatable row selection. I'm getting [],[""] in console log. I have looked for other questions on SO and tried but no help

我无法获得选定的行id。我正在使用datatable行选择。我正在控制台日志中获取[],[""]。我一直在寻找其他的问题,但是没有帮助

My javascript code is

我的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');
    });

});

I'm filling up my datatable with json data from controller in mvc

我正在用mvc中的controller中的json数据填充我的datatable

    $('#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;

});

1 个解决方案

#1


1  

You could spare yourself a lot of pain, if you used dataTables select extension :

如果您使用的是datatable选择extension,您可以省下不少麻烦:

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);
})

demo -> http://jsfiddle.net/0w1p7a3s/

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

#1


1  

You could spare yourself a lot of pain, if you used dataTables select extension :

如果您使用的是datatable选择extension,您可以省下不少麻烦:

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);
})

demo -> http://jsfiddle.net/0w1p7a3s/

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