2009-12-17 9 views
6

Ich habe das getestet und der Grund, warum ich die Frage gestellt habe, ist, dass es verschiedene Dinge für verschiedene Tabellen zu tun scheint.Wenn Sie das jQuery DataTables-Plug-in verwenden, fügt fnAddData() Zeilen am oberen oder unteren Rand einer HTML-Tabelle hinzu?

Ich konnte keine Dokumentation finden, ob dies konfigurierbar ist oder nicht. Ich hätte gedacht, dass es die Zeilen nach unten hinzufügen würde, aber ich habe ein paar Beispiele, wo ich sehe, dass Zeilen manchmal oben oder sogar in der Mitte hinzugefügt werden. Es scheint ziemlich zufällig zu sein.

Irgendwelche Ideen?

Antwort

12

Ich habe den Quellcode angeschaut und fnAddData ruft die interne Methode _fnAddData auf, die eine Zeile hinzufügt und bei Erfolg den Index in der Tabelle zurückgibt. _fnAddData fügt die neue Zeile am unteren Rand hinzu (der Index der neuen Zeile entspricht der Anzahl der Zeilen in der Tabelle).

FnAddData hat jedoch einen optionalen Parameter, um die Tabelle unter Berücksichtigung der verschiedenen aktivierten Funktionen neu zu zeichnen. Dieser Parameter ist standardmäßig auf "true" gesetzt und verursacht wahrscheinlich das "zufällige" Verhalten.

5

Durch die Quelle der Datatable blättern, wie von kiannakaki erklärt. Die Methode hängt alle neuen Datenzeilen am Ende der Tabelle an.

Der Grund für das "zufällige" Verhalten ist, dass jedes Mal, wenn eine neue Zeile hinzugefügt wird, die Methode ein "Neuzeichnen" der gesamten Tabelle ausführt, sofern nicht anders angegeben. Wenn dies der Fall ist, wird die Tabelle durch mehrere Funktionen wie Filtern/Sortieren usw. usw. durchlaufen und vollständig auf die Seite neu geschrieben. Im Wesentlichen werde ich raten, dass Sie zufällige Daten in neue Zeilen einfügen, die den "zufälligen" Effekt erzeugen können, wenn eine neue Zeile hinzugefügt wird.

Sie können das Neuzeichnen von Tabellen einfach deaktivieren, indem Sie im fnAddData-Aufruf einen zweiten Parameter hinzufügen, der auf false gesetzt werden muss.

Wenn dieses Problem weiterhin besteht, würde ich einen Fehler für dieses Problem einreichen, da dies kein anderer Grund für dieses Verhalten ist.

4

Sortierung zu deaktivieren, so dass eine neue Zeile wird am Ende einer Tabelle angehängt werden,

"bSort": false 

auf (oben) Ihr Datatable Initialisierung hinzuzufügen.