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?
$(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.