• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Tabellen Kopfzeile stehen lassen beim scrollen

zu 1)
Das kannst du jetzt mit der Variable waitHeaderDisappear steuern. Einfach auf true oder false setzen.

zu 2)
Das habe ich jetzt noch nicht so ganz verstanden. Muss ich nochmal genauer testen.

zu 3)
Der Aufruf erwartet jetzt eine zweite ID: fixedTableHeader(tableID, resizeID)
Wobei ja laut https://developer.mozilla.org/en-US/docs/DOM/element.onresize der Event nur bei dem Window-Objekt gefeuert wird.
Der IE sollte wiederum das auch bei bestimmten HTML-Elementen ebenso feuern können, laut http://msdn.microsoft.com/de-de/library/ie/ms536959(v=vs.85).aspx
Müssen wir uns halt mal langsam herantatsten...

Hier wieder was zum Testen: Table with fixed header V.4.3.5


PS: habe gesehen das noch der Debugger (Version 1.1) drinnen ist, aber dessen Funktionsweise kennste ja schon...
 
Zuletzt bearbeitet:
zu 1) Das kannst du jetzt mit der Variable waitHeaderDisappear steuern. Einfach auf true oder false setzen.
Paßt! Perfekt! Danke dir!

zu 2) Das habe ich jetzt noch nicht so ganz verstanden. Muss ich nochmal genauer testen.
Im Moment sehe ich das Zucken auch nicht mehr. Lass mal! Wenn noch was ist, melde ich mich nochmal. Ich hatte das Problem nur in bestimmten Konstellationen. Muss jetzt mal neu schauen, ob das noch auftritt.

zu 3) Der Aufruf erwartet jetzt eine zweite ID: fixedTableHeader(tableID, resizeID)
Perfekt! Funktioniert in allen Browsern! Vielen vielen Dank!
Ich weiß nicht, was da jetzt korrekt ist und was nicht aber das document.getElementById(resizeID).onresize muss es gewesen sein. Hat erst nicht geklappt. Dann habe ich dem Großeltern-div eine ID gegeben und diese als resizeID übergeben, sofort hat es funktioniert.

PS: habe gesehen das noch der Debugger (Version 1.1) drinnen ist, aber dessen Funktionsweise kennste ja schon...
Hab die Zeilen einfach erstmal gelöscht
 
zu 2)
Das habe ich jetzt noch nicht so ganz verstanden. Muss ich nochmal genauer testen.
Hab mir das gerade auch nochmal angeschaut.
Nachstellbar ist das wie folgt: Man braucht einen PC mit nicht allzuviel Power und eine Tabelle die so kurz ist, dass der Browser auf keinen Fall rechts eine Scrolleiste bildet.
Besonders deutlich und zuverlässig kann ich das hier im IE und im Chrome nachstellen. Bei Safari, Firefox und Opera nicht so gut, die scheinen eine andere Rendering-Technik oder Reihenfolge der Abarbeitung bei Tabellen zu besitzen.

Ich beschreibe mal so halb technisch wie ich glaube, dass es abläuft:
- HTML wird vom Server geladen
- Browser baut Bild ohne Scrolleiste auf, rendert auch die Tabelle und alles drum und dran
- Tabelle wird für mich sichtbar und hat jetzt eine Breite von tatsächlich 100 %
- nun kommt der Browser an den jQuery(document).ready() Befehl (darin rufe ich erst den Paginator auf, der natürlich auch eine halbe Sekunden zum Laden braucht)
- dann führt der Browser den Aufruf fixedTableHeader('tabhandtab','maincontentdiv'); aus
- und genau in diesem Moment zuckt die Tabelle auf eine Breite von ca. 98 % zurück, nämlich wird rechts genau so viel Platz gemacht, dass eine Scrolleiste hinpassen würde obwohl garkeine benötigt wird
- ansonsten ändert sich an der Tabelle garnichts, sie wird nur rechts zusammen gestaucht soviel wie eine Scrolleiste Platz bräuchte

Ist ein bissel schwierig zu erklären. Hoffe man kann das jetzt nachstellen :)

Ich hätte jetzt gern dieses Zucken weg. Wenn ich wüßte, was da genau abläuft würde ich der Tabelle von vorn herein die richtige Breite geben, dann bräuchte das nicht erst bei Ausführung von fixedTableHeader gemacht werden und das Zucken wäre weg.
Aber am allerliebsten wäre mir, wenn die Tabelle 100 % bleiben könnte, wenn es keine Scrolleiste gibt. Mir wäre auch egal, dass sich im Falle einer Bildgrößenänderung die Scrolleiste auf den Tabelleninhalt legen würde. Der Benutzer muss die Seite nach einer Bildgrößenänderung sowieso manuell neu laden, da auch meine Menüs sich nicht automatisch anpassen und die Kopfzeile der Tabelle nach Aufruf von fixedTableHeader ohnehin eine fixe Breite hat.

Vielen Dank!
 
STOP! Kommando zurück!
Ich glaube, ich weiß, was da Schuld war.
Ich hatte über der Tabelle ein relativ hohes div welches erst nach Seitenaufbau auf display:none gesetzt wurde.
Das heißt, während des Tabellenaufbaus muss es da gewesen sein, weshalb der Browser eine Scrolleiste gesetzt hat.
Au Mann, ist das alles krank :)

Ich glaube, es ist jetzt alles perfekt. Wenn mir noch was auffällt, melde ich mich nochmal.

@mini: Was darf ich dir ausgeben?
 
Ich glaube, unsere letzte Änderung mit dem onresize hat uns jetzt ein GRANDE PROBLEMO beschert.

Workaround:
- Tabelle füllt die ganze Seite aus, kein Scrollbalken zu sehen
- Tabelle enthält Zeilen und unter jeder Zeile ist eine quasi Zusatzzeile die mit display:none versteckt ist (also im Grunde bestehe jede Datenzeile aus zwei technischen <tr>'s wovon die untere dann jeweils nur bei Bedarf aufgeklickt werden kann, weil sie unwichtig ist bzw. der Inhalt so groß ist, dass er nicht in eine Spalte der Tabelle paßt)
- nun ändert man das Style Attribut display von einer oder mehrerer dieser verstecken Zeilen wird die Tabelle ja länger
- leider entsteht aber kein Scrollbalken, stattdessen wird unten das Tabellenlayout sogar teilweise zerschossen, Rahmen fehlen usw.

Verhält sich im IE9 genau so wie im FF.

Jemand eine gute Idee, wie wir beides unter einen Hut kriegen können?
Mir würde reichen, wenn ich dem Browser quasi manuell sagen könnte, "Junge, prüf mal die Anzeige, ob ein Scrollbalken benötigt wird". Ich glaube, sowas ähnliches hatten wir mal irgendwann in einem Zwischenschritt. Bekommen wir das wieder integriert ohne das Problem mit der stehenbleibenden Kopfzeile bei Änderung eines Inhalts unter der Tabelle wieder zu produzieren? :confused:
 
Hab im Moment viel um die Ohren.
Mal schaun wann ich Zeit finde meine Testseite umzubauen, um deinen Fall nachzustellen.
 
Mal schaun wann ich Zeit finde meine Testseite umzubauen, um deinen Fall nachzustellen.
Das habe ich dir doch prompt schon mal abgenommen.

Hier die neue Version 4.4:
Anhang anzeigen tableFixedHeader.zip

Von mir durchgeführte Änderungen:
- Version auf 4.4 geändert
- externes JS mit absolutem Pfad versehen
- in der Tabelle neue Zeile mit id="rhide"
- für den gesamten Body Bereich neue id="maincontentdiv" (so ist es bei mir nämlich auch)
- Aufruf von fixedTableHeader geändert in fixedTableHeader('maintable', 'maincontentdiv');
- neuen Button <button onclick="document.getElementById('rhide').style.display='';">show hidden line</button> ergänzt

Wie kann man es reproduzieren?
Im Grunde sofort nach Seitenaufbau durch Klick auf "show hidden line". Man sieht sofort den Effekt. Browser schiebt die Tabelle unten in einen unsichtbaren Bereich raus.
Das wird noch fataler, wenn man mit "add rows" ein paar Zeilen ergänzt (ab nur so oft, dass noch kein Scrollbalken da ist) und danach "show hidden line" anklicken.

Bitte im kurze Bestätigung, ob Effekt nachstellbar ist für dich/euch. Sonst muss ich da nochmal ran.
 
Denke habe es erkannt was du meinst. Das Script nimmt halt die ürsprüngliche Größe der Tabelle. Kannst du das Problem beheben wenn du den Button call fixedTableHeaderUpdate-methode benutzt? Das sollte die Tabelle wieder korrigieren.
 
Leider doch noch keine Entwarnung.
Ich habe eine Tabelle mit checkboxen. Die wird per jQuery('input[name="kennz"]:checked').each(function() {}); dursucht.
Und immer nach Ausführung von jQuery('#tabhandtab').trigger('fixedTableHeaderUpdate'); sind alle checkboxen nicht mehr "checked", die vorher sehr wohl "checked" waren.
Übt dieser trigger Einfluss auf checkboxen im DOM?
 
Hab es auch direkt in die neue Version eingebaut:
Anhang anzeigen tableFixedHeader.zip

Durchgeführte Änderungen:
- Version auf 4.5 geändert
- Pfade zu Grafiken im CSS absolut gemacht
- neue Schaltfläche "show checked boxes"
- neue Spalte mit Checkboxen

Workaround:
- Seite baut sich auf, klicke auf "show checked boxes" zur Bestätigung, dass nichts markiert ist
- Klicke irgendeine der checkboxen an
- klicke auf "show checked boxes" zur Bestätigung, dass eine checked ist
- klicke auf "call fixedTableHeaderUpdate-methode"
- klicke auf "show checked boxes" nun ist das Ergebnis ganz anders und ganz falsch :)
 
Ich habe eine Tabelle mit checkboxen. Die wird per jQuery('input[name="kennz"]:checked').each(function() {}); dursucht.
Der Code ist schon korrekt.


Und immer nach Ausführung von jQuery('#tabhandtab').trigger('fixedTableHeaderUpdate'); sind alle checkboxen nicht mehr "checked", die vorher sehr wohl "checked" waren.
Wie gesagt kann ich das nicht so feststellen. Die Checkboxen bleiben aktiviert (checked) bzw. deaktiviert (unchecked).


Ansonsten mal das hier probieren:
Anhang anzeigen tableFixedHeader_V.4.5.1.zip
 
Yeah Seite 10 erreicht :D
Bei mir sind es schon 14 :)

Na dann bin ich ja froh das jetzt soweit alles passt.
Nein. Verflixt. Wieder ein neues Problem.
Nach Anwendung der Methode fixedTableHeaderUpdate gehen mir jetzt sämtliche ID's in der Kopfzeile verloren.

Testcase:
Anhang anzeigen tableFixedHeader4.5.2.zip

Bitte Console oder Firebug öffnen, dann auf den Kopf der Spalte 3 klicken, Breite wird angezeigt, kein Fehler.
Dann auf call fixedTableHeaderUpdate-methode klicken und danach nochmal auf den Kopf der Spalte 3. In der Console erscheint jetzt, dass das Objekt null ist. :frown:
 
Zurück
Oben