Table Fixed Column(s) / Headers
Ich habe zig jQuery-Plugins ausprobiert, die Tables behandeln. Es gibt sehr mächtige, wie
Ingrid oder
DataTables. Die sind groß und können viel, aber leider nicht das, was ich wollte: fixe Spaltenköpfe und eine zu definierende Anzahl fixer Zeilenköpfe. Also: scollst du nach unten, bleiben die Spaltenköpfe sichtbar, scrollst du nach rechts, bleiben die Zeilenköpfe sichtbar.
Letzteres gibt es kaum. Kleinere Plugins, die das zu erledigen versuchen, haben sich nicht in mein Konzept eingefügt, funktionierten nicht oder nicht angemessen. Die Großen wollte ich dann wegen der zu großen Größe ohnehin nicht verwenden; warum eigentlich immer Plugins, die unbedingt alle Wünsche abdecken? Wo sind die kleinen, die genau die Anforderung abdecken, die du gerade hast?
Nach 3 Stunden Recherche, Anpassen, Testen und Verwerfen gab ich enttäuscht auf und schrieb ein eigenes Script, das bislang nur eine Funktion ist und Zeilenköpfe (Frozen Row Headers) abdeckt – momentan ist auch noch ein vorhandener Wrapper nötig.
Mein Prinzip ist simpel: Tabelle clonen. Im Original und im Clone dafür sorgen, dass die Spaltenbreiten bleiben, wie sie sind. Aus dem Original die Row Headers entfernen. Aus dem Clone alles andere als die Row Headers entfernen und dafür sorgen, dass die Zeilenhöhe in jeder Zeile der Höhe aus dem Original entspricht. Um das Original einen Wrapper mit overflow:scroll mit absoluter Positionierung einfügen, um die Breite des Clones nach rechts versetzt. Clone davor einfügen. Fertig. Das muss man doch nicht selber schreiben, so einfach ist das!
Um meinem Konzept noch fixe Spaltenköpfe hinzuzufügen, müsste man diese wiederum aus dem Original herauslösen und über einen neuen Clone in den erzeugten Wrapper einfügen. Das Scrollen im Wrapper müsste per Javascript in diesem neuen Clone nachgezogen werden.
Hier erst einmal der momentane Stand. Die Funktion erwartet als Parameter die jQuery-Instanz der Tabelle (die eine ID hat und um die ein vorhandener Wrapper liegt), die maximale Breite der Tabelle und die Anzahl fixer Spalten (mindestens 1).