Zur Navigation

Tabelle sortieren

1 Jerry02

[Edit Jörg: die folgenden Beiträge wurden von diesem Thread abgetrennt]

ich habs geschafft! nach langem probieren geht es jetzt endlich! hoffendlich richtig! :)
sag mal geht es überhaupt die Tabelle zu sortieren ohne ein array zu erstellen? weil das muss ich jetzt auch noch machen! weil ich hab mal so gesucht und hab nur die aktionen für arrays gefunden...

24.08.2010 10:10 | geändert von Jörg: 24.08.2010 11:13

2 Jörg Kruse

Ja, sortieren geht nur über ein Array - dazu musst du die Nodes mitsamt den Werten, nach denen du sortieren möchtest, in ein Array einlesen, dieses nach jenen Werten sortieren und abschließend aus dem Array die Tabelle neu aufbauen.

24.08.2010 10:59

4 Jörg Kruse

Ja, gehen tut's schon - aber die Sortierung ist etwas aufwendiger, weil du das Array erst einlesen musst

wie sieht so ein array aus bzw. bei selfhtml stehen da viele varianten http://de.selfhtml.org/navigation/suche/index.htm?Suchanfrage=array welche sollte ich denn da nehmen?

Wenn du da auf "childNodes" klickst, bist du schon in einer dir bekannten Ecke :)

24.08.2010 11:20

5 Jerry02

oje oje na da bin ich ja gespannt wie ich das noch alles hinbekommen werde!
aber immer wenn ich etwas hinbekommen habe oder du mir etwas gesagt hast, hab ich es danach verstanden!
du bist mir echt ne riesen hilfe!

24.08.2010 11:28

6 Jerry02

also sieht dann ein array z.B. so aus?:

var WKNSortieren = document.getElementById("tr" + rowid).childNodes[0]firstChild.innerHTML;
WKNArray = new Array(WKNSortieren);

das wäre dann der Array für die WKN...

oder muss man alles auf einmal in das array eintragen?

24.08.2010 11:54 | geändert: 24.08.2010 11:55

7 Jerry02

oder doch ehern so?

		var WKNSortieren = document.getElementById("tr" + rowid).childNodes[0].firstChild.innerHTML;
		var NameSortieren = document.getElementById("tr" + rowid).childNodes[1].firstChild.innerHTML;
		var KategorieSortieren = document.getElementById("tr" + rowid).childNodes[2].firstChild.innerHTML;
		var Anzahlsortieren = document.getElementById("tr" + rowid).childNodes[3].firstChild.innerHTML;
		var KursSortieren = document.getElementById("tr" + rowid).childNodes[4].firstChild.innerHTML;
		var GesamtwertSortieren = document.getElementById("tr" + rowid).childNodes[5].firstChild.innerHTML;
		Tabelleninhalt = new Array(WKNSortieren, NameSortieren, KategorieSortieren, Anzahlsortieren, KursSortieren, GesamtwertSortieren);

24.08.2010 12:29

8 Jerry02

hm...so wie ich das gemeint hab ist das auf jeden fall schonmal falsch.
kannst du mir vielleicht nen kleinen tip geben?
ich soll jede spalte in der tabelle sortierbar machen außer halt die von aktion! aber wenn ich eine spalte sortiere müssen ja die anderen spalten mitsortiert werden, sonst verschieben sich ja die werte oder?

24.08.2010 13:38 | geändert: 24.08.2010 13:57

9 Jörg Kruse

Ja, du willst ja auch nicht die Spalten, sondern die Zeilen sortieren.

Ich denke, dafür benötigst du ein zweidimensionales Array. Der erste Wert enthält dabei jeweils den Inhalt der Tabellenzeile und der zweite den Wert nachdem du sortieren möchtest. So könnte z.B. ein Array ausschauen, welches nach der Anzahl (in irgendeiner Spalte) sortiert werden soll:

Unsortiert = new Array();
Unsortiert[0] = new Array();
Unsortiert[0]['Inhalt'] = document.getElementById("tr12345678");
Unsortiert[0]['Anzahl'] = 42;
Unsortiert[1] = new Array();
Unsortiert[1]['Inhalt'] = document.getElementById("tr23456789");
Unsortiert[1]['Anzahl'] = 24;

In diesem Thread ist z.B. aufgeführt, wie man solch ein zweidimensionales Array sortieren kann:

http://forum.de.selfhtml.org/archiv/2006/6/t132077/

24.08.2010 15:23 | geändert: 24.08.2010 15:24

10 Jerry02 (Gast)

also geb ich das dann z.B. so an:

Unsortiert = new Array();
Unsortiert[0] = new Array();
Unsortiert[0]['Inhalt'] = document.getElementById("tr" + timestamp);
Unsortiert[0]['Anzahl'] = 42; --->was bedeutet diese Zahl?
Unsortiert[1] = new Array();
Unsortiert[1]['Inhalt'] = document.getElementById("tr" + timestamp);
Unsortiert[1]['Anzahl'] = 24; ---> was bedeutet diese Zahl?

oder muss ich anstatt timestamp wieder rowid angeben? eigendlich ja oder?

24.08.2010 21:57