2009-12-17 5 views
6

J'ai testé cela et la raison pour laquelle j'ai posé la question est qu'il semble faire des choses différentes pour différentes tables.En utilisant le plugin jQuery DataTables, fnAddData() ajoute-t-il des lignes en haut ou en bas d'une table html?

Je n'ai trouvé aucune documentation sur si cela est configurable ou non. J'aurais pensé qu'il ajouterait les lignes au bas, mais j'ai quelques exemples où je le vois en ajoutant des lignes en haut ou même au milieu parfois. Cela semble assez aléatoire.

Des idées?

Répondre

12

J'ai regardé le code source et fnAddData appelle la méthode interne _fnAddData, qui ajoute une ligne et, en cas de succès, retourne son index dans la table. _fnAddData ajoute la nouvelle ligne en bas (l'index de la nouvelle ligne est égal au nombre de lignes de la table).

Toutefois, fnAddData dispose d'un paramètre facultatif permettant de redessiner la table en tenant compte des différentes fonctionnalités activées. Ce paramètre est par défaut vrai et c'est ce qui provoque probablement le comportement «aléatoire».

5

Naviguer à travers la source de Datatable, comme expliqué par kgiannakaki. La méthode ajoutera toutes les nouvelles lignes de données à la fin de la table comme il se doit.

La raison du comportement "aléatoire" est que chaque fois qu'une nouvelle ligne est ajoutée, la méthode effectuera un "redessin" de la table entière sauf indication contraire. Lorsque cela est fait, la table est exécutée à travers de multiples fonctionnalités telles que le filtrage/tri, etc etc ... et complètement réécrite sur la page. Essentiellement, je vais deviner que vous ajoutez des bits aléatoires de données dans de nouvelles lignes qui peuvent créer l'effet "aléatoire", chaque fois qu'une nouvelle ligne est ajoutée.

Vous pouvez facilement désactiver le rafraîchissement de la table en ajoutant un deuxième paramètre dans l'appel fnAddData qui doit être défini sur false.

$(this).fnAddData(data, false); 

Si ce problème persiste, je générerais un bogue pour ce problème, car il n'y a pas d'autre raison pour ce comportement.

4

Pour désactiver le tri, de sorte qu'une nouvelle ligne sera ajoutée au fond d'une table, ajoutez

"bSort": false 

à (haut de) votre initialisation DataTable.