Schnelle HTML-Tabelle Sortieren?
Ja, ich weiß, es gibt eine viel von JS/jQuery-Programme gibt, dies zu tun. Ich bin derzeit mit http://www.kryogenix.org/code/browser/sorttable/sorttable.js . Es ist ganz einfach: nur eine JS-Datei, fügen Sie ein paar Attribute der Klasse auf Ihren Tisch, und Sie sind aus. Insbesondere, Sie nicht wirklich brauchen, zu wissen, JS zu verwenden, und Sie können fügen Sie benutzerdefinierte Schlüssel Sortieren, ohne zu schreiben Sie Ihre eigenen JS zu verlängern. Ich mag es, eine Menge für diese zwei Gründen. Das größte problem: meine Tabelle ist ~9300 Zeilen lang, und das Sortieren dauert 10-20 Sekunden. So Frage ich mich, sind alle anderen scripts gibt, die schneller als diese? Diese sind die, die ich gefunden habe:
http://webfx.eae.net/dhtml/sortabletable/sortabletable.html (Nicht einmal sicher, was dieses verwendet)
http://tablesorter.com/docs/ (Wirklich schön, aber nicht einfach zu verlängern, muss man wissen, JS/jQuery)
http://flexigrid.info/ (Overkill, ich brauche nur eine Tabelle sorter, nicht eine ganze Daten-manipulation-Programm)
http://datatables.net/ (Overkill, erfordert Js/jQuery zu erweitern)
Ich bin sicher, es gibt 5000 andere Programme, die Sie tun können, was ich will, aber ich habe nicht die Zeit, um herauszufinden, und testen Sie Sie alle, um zu sehen, wenn Sie schnell sind. Also ich würde gerne wissen, ob jemand da draußen auf StackOverflow kann mir zu welcher Bibliothek Sie wissen, dass Sie schnell, so dass ich nur noch herauszufinden, wie man ein Programm.
(Btw, ich habe gesehen, Java-Sortieren, Hunderte von tausenden von zahlen in Millisekunden mit quicksort; weiß jemand, was der Algorithmus JS.sort() verwendet?)
- Sie hat dies mit jquery, aber es klingt wie Sie wollen, zu nehmen zu vermeiden, die Abhängigkeit... welcher Weg ist es?
- Sicher, java Sortieren können Sie schnell zahlen, aber du bist Sortierung der DOM. DOM-Operationen sind langsam. Ihr Problem beginnt mit 9300 Zeilen in einer HTML-Tabelle. Ich würde es Sortieren der server-Seite. Aber wenn Sie nicht wollen, das zu tun, vielleicht ist das speichern der Daten in ein JS-Objekt -, Sortier-und re-rendering der Tabelle jedes mal schneller wäre.
- Ja, ich möchte es vermeiden, aber ich werde nichts nehmen, das ist schnell und erfahren, JQuery, wenn nötig.
- Ich tun, liefern Sie den HTML-sortiert nach einer Spalte, aber die Daten sind interessant, sortiert aus vielen verschiedenen Spalten. Die JS verwende ich zurzeit liest die HTML, speichert die Eingaben in ein array, und dann wird mit JS die eingebaute sort() auf das array.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich habe großen Erfolg mit DataTables (ein weiteres jQuery-plugin)) mit ähnlichen Zeilen-Nummern auf, was du redest. Der speed-Verlust sind Sie zu sehen, mit javascript über das, was Sie gesehen haben, in java ist es tatsächlich Rendern DOM, das ist viel mehr Arbeit. Die Schönheit der DataTables ist, haben Sie die Möglichkeit, die Quelle der Daten aus einem javascript-array (im wesentlichen json) - so wird die Sortierung erfolgt auf der Reihe (ähnlich der speed-java), und dann nur der Teil der Tabelle muss der Benutzer, um zu sehen, erzeugt in der DOM.
Sehen diese urls für Beispiele:
http://datatables.net/examples/data_sources/js_array.html
oder
http://datatables.net/examples/data_sources/ajax.html
Schlage ich vor, den letzteren. Wenn es noch nicht schnell genug ist, die Verwendung einer statischen json-array Sie erstellen möchten eine serverseitige Skript, um die Belastung aus javascript - tolle Beispiel mit serverseitigem code hier:
http://datatables.net/examples/data_sources/server_side.html
Edit: Unendlich Scrolling
Diskutiert in den Kommentaren, das problem ist nicht die Art, sondern die Umwandlung der HTML-Tabelle für die JS und zurück. Dies kann helfen, sich von nur be-rendering Teile des zurückgegebenen Art, wie der Benutzer Sie sieht; der server bietet auch die JS die gleichen Informationen wie in der Tabelle in JSON-form. Diese beiden Techniken beseitigen die HTML-JS-Konvertierung und rendering-Probleme, und damit erheblich die Geschwindigkeit erhöhen.
HTML (das ist alles, was gerendert werden muss zunächst, bevor die JSON-kommt zusammen - fügen Sie so viele th-tags als Spalten):
JQUERY:
array.txt enthält:
Abgesehen von den Bibliotheken, der Sortierung der Tabelle ist ganz einfach, um es selbst zu tun.
Die Zeit, die es braucht, um tatsächlich die Zeilen zu Sortieren ist vernachlässigbar in Bezug auf die Zeit, die der DOM muss Objekte verschieben.
Die eine Sache, die Ihnen die beste Leistung, wird zum trennen der Zeilen, ordnen Sie Sie nach Ihren Bedürfnissen und bringen Sie Sie wieder. Sie brauchen keine rohen JSON-Daten, nur trennen Sie die $tr 's, schnappen Sie sich die Werte, die Sie vergleichen möchten aus td' s, ein array von $tr ' s, Sortiere dieses array nach der Spalte, die Sie wollen, und bringen Sie Sie zurück zu Ihrem tbody.
Beispielsweise mit dieser Technik, die ich bin-Sortierung 3000 Zeilen, 15 Spalten in 1 Sekunde Zeit, das ist völlig lebensfähig. Mit dieser Leistung, das problem ist nur, wie fetch 3000 Zeilen an den browser...
Ich denke, dass diese javascript-Bibliothek leicht und leistungsstark:
http://tabulator.info
Tabulator ermöglicht das erstellen von interaktiven Tabellen in Sekunden aus jeder beliebigen HTML-Tabelle, JavaScript-Array, AJAX data-source-oder JSON-formatierte Daten.
Innerhalb der Zellen können Sie einen text, Fortschrittsbalken, Bilder, weitere Tabellen!