web-dev-qa-db-fra.com

Comment mettre à jour les données de ligne dans Datatable?

J'essaie de mettre à jour une ligne dans Datatable utilisée dans mon application React.

J'enregistre l'objet Datatable ainsi que les lignes rangées enregistrées dans l'état de mon composant React sous la forme this.state.myTable et this.state.selected.

Je sauve l'objet Datatable initialement comme ceci:

var myTable = $('#myTable').DataTable({ ... });

this.setState({ myTable: myTable });

Je sauvegarde les lignes sélectionnées sur l'événement de clic de ligne comme ceci:

$('#myTable tbody').on('click', 'tr', function () {
    $(this).toggleClass('selected');
}).on('click', 'tr', function () {
    this.setState({ selected: this.state.myTable.rows('.selected') });
}.bind(this));

Je mets à jour la ligne data (selon le docs ) comme ceci:

function (newValue) {
    var data = this.state.selected.row().data();
    data.someValue = newValue
    this.state.selected.row().data(data).draw();
},

Mais les nouvelles données ne sont pas reflétées dans mon objet Datatable sauf si je mets à jour une autre ligne (mais seule cette ligne est mise à jour et non cette ligne).

Qu'est-ce que je fais mal ici?

4
Anubhav Dhawan
$(document).ready(function () {
   $('#dataTable').on('click', '.update', function () {
        var tableRow = $('#dataTable').row($(this).parents('tr'));
        var rData = [
            test1,
            test1,
            '<a href="#" data-href="' + response.result[0].id + '" class="update">Update</a>',
            '<a href="#" data-href="' + response.result[0].id + '" class="delete">Delete</a>'
        ];
        $('#dataTable')
                .row( tableRow )
                .data(rData)
                .draw();
    });
});

Vous pouvez utiliser ce code, cela a fonctionné dans nos projets.

1
Vahap Gençdal