Get datatable's row data on button click

2020-06-17 06:24发布

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

2条回答
等我变得足够好
2楼-- · 2020-06-17 06:42

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

查看更多
兄弟一词,经得起流年.
3楼-- · 2020-06-17 06:51

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

    });

});
查看更多
登录 后发表回答