Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get datatable's row data on button click

i have a problem with this project.

I'm trying to create a crud menu, when hitting the Edit button the row's data will be transferred to a bootstrap modal and from there user will be able to edit.

Problem : right now when hitting the row - the modal opens perfectly with the row's data - but when i try to change it to get the data by pressing on the button ('.edit_btn') ,it dos't works. i know that the button doesn't holds any data - so that's why it's probably don't work....

 $('#example tbody').on('click',  '.edit_btn', function () { // works only 
    when replacing 'tr' with  '.edit_btn' //
    var data_row = table.row(this).data(); // row's data

    $("#myModal").modal('show');

    $('#myModal').on('shown.bs.modal', function() {

        $('#name').val(data_row.id);
        $('#type').val(data_row.type);
        $('#camp').html(data_row.campaign);

    });

});

Thanks

like image 790
RoyBarOn Avatar asked Apr 16 '17 09:04

RoyBarOn


2 Answers

I would use a delegated event handler tbody .edit_btn and grab the row through closest('tr') :

$('#example').on('click', 'tbody .edit_btn', function () {
    var data_row = table.row($(this).closest('tr')).data();
    ...
})

forked plunkr -> https://plnkr.co/edit/58vkkp3M6d68uuMknXus?p=preview

like image 116
davidkonrad Avatar answered Oct 30 '22 12:10

davidkonrad


Got it...

$('#example tbody').on('click', '.edit_btn', function () {

     var data_row = table.row( $(this).parents('tr') ).data(); // here is the change
    $("#myModal").modal('show');

    $('#myModal').on('shown.bs.modal', function() {

       $('#name').val(data_row.id);
        $('#type').val(data_row.type);
        $('#camp').html(data_row.campaign);

    });

});
like image 4
RoyBarOn Avatar answered Oct 30 '22 11:10

RoyBarOn