1
votes

Comment obtenir la dernière ligne insérée à partir d'une table de données

J'utilise le plugin datatables pour créer une table de données. J'ai mis un bouton pour ajouter de nouvelles lignes. La nouvelle ligne insérée peut être n'importe où dépend de la colonne par laquelle la table est triée. Je dois définir un événement sur le bouton à l'intérieur de la ligne une fois qu'il est inséré. Je dois donc obtenir la dernière ligne insérée pour ce faire. Mais je ne trouve pas de moyen. J'ai essayé ci-dessous mais cela ne fonctionne pas. index () ne renvoie pas l'index exact où se trouve réellement la ligne.

var row = table.row.add({...});
row.draw();
var tr = $('#datatable tbody tr').get(row.index());

Veuillez aider. Votre réponse est aimablement appréciée et merci d'avance.


0 commentaires

3 Réponses :


0
votes

Impossible de trouver un moyen d'y parvenir en utilisant la fonction fournie par un plugin. Mais grâce à Dieu, il existe une solution de contournement.

Marquez la ligne insérée dans la fonction de rendu de colonne. Par exemple, j'ajoute une balise

datatable.row(i).remove().draw();

Lors de l'insertion d'une nouvelle ligne, insérez-la avec une donnée indiquant l'inclusion de l'indicateur. Obtenez la ligne près du drapeau. Ensuite, supprimez le drapeau.

var i = datatable.rows().count() - 1;
var data = datatable.row(i).data();
datatable.row(i).data(changeSomething(data)).draw();

Pour tout autre cas qui n'a pas besoin d'éditer explicitement le , récupérez l'index de la dernière ligne insérée. Obtenez la ligne datable et mettez à jour les données. Définissez la fonction de rendu de colonne pour rendre la ligne mise à jour en conséquence.

datatable.row.add({...}).draw();
var row = $('last').parents('tr');
$('last').remove();

Et pour supprimer la ligne

datatable = $('#datatable').DataTable({columns : [{render : function(){... <last/> ...}}]});


0 commentaires

2
votes

Prenez la longueur de la table et -1 et ce numéro est le index du dernier tr

var lastRowIndex = $('#datatable tr').length -1;

2 commentaires

+1 merci pour votre réponse. mais désolé monsieur. cela ne fonctionne pas lorsque la nouvelle ligne est au milieu. j'ai mis ma propre réponse


Bon, bonne chance alors. je voulais juste fournir la solution simple. bon codage.



2
votes

De nouvelles lignes seront ajoutées à la fin de la liste des lignes, vous pouvez donc faire quelque chose comme ceci

table.row(table.rows().count()-1)

Voir fiddle ici .


2 commentaires

Merci pour votre réponse. dans mon cas, il y a un formulaire contextuel à remplir avant l'insertion de la ligne. donc la nouvelle ligne peut également être au milieu


oui, cet exemple que j'ai publié place la ligne au milieu du tableau - mais il renvoie toujours la dernière ligne ajoutée. Avez-vous regardé le violon?