Tabellen-Darstellungsproblem

  • Liebe Leute,

    ich habe eine komplex verschachtelte Tabellenstruktur, bei der ich auf "click" einzelne Teile dynamisch ein- und ausblenden will. Im Prinzip geht das auch, nur scheint es eine Art Massenproblem zu geben. Zur Verdeutlichung (hier mal statisch dargestellt):

    Das wird so angezeigt wie ich es erwarte. Wenn ich jetzt aber alle "block" durch "none" ersetze, erwarte ich eigentlich, daß die Zeile mit dem FFF auf eine Zeilenhöhe zusammenschnurrt und GGG bis ZZZ verschwinden.

    Das Verschwinden klappt auch, aber das FFF nimmt sich jetzt mehr Platz als ihm zusteht, als ob die ganzen ausgeblendeten Tabellenelemente nicht völlig verschwinden, sondern nach wie vor ein bißchen Platz brauchen.

    Kann das jemand bestätigen, und gibt es einen Trick das abzustellen?

    Das "display:none" beim tr-Objekt zu platzieren nutzt leider auch nichts. Nur wenn ich weniger als 10 Zeilen verstecke (also in obigem Beispiel PPP bis ZZZ lösche und die "rowspan"s von 000 auf 18 und von
    FFF auf 9 setze, sieht es stimmig aus.

    Wer weiß Rat?

    Gruß&Dank
    Wolfgang

    Einmal editiert, zuletzt von synaptic (29. November 2010 um 13:44) aus folgendem Grund: codetags ergänzt zur besseren lesbarkeit

  • mmh wenns immer die gleichen zeilen sind die du ausblendest, könntest du nen umschliessendes div nehmen und dem dann des display:none; und display:block; zuweisen
    oder haste schon probiert dem sichtbaren teil ne feste höhe zu geben? würd auch gehen, aber mit deinem pseudoinhalt lässt sich das schwer sagen, denn es ist gut möglich, dass du an der stelle nichtma ne tabelle benötigst ;)

  • Gleichzeitig mit der style-Änderung müsstest Du auch den rowspan-Wert der Zeile mit dem FFF anpassen. Wenn Zeilen weggenommen werden muss der Wert entsprechend niedriger gesetzt werden. Wenn mehr, dann höher.

    Und du müsstest die <tr> ausblenden, nicht die <td>.

    Btw. würde ich keiner Tabellezelle einen "display: block;"-Wert zuweisen. Richtig wäre "display: table-cell;" in deinem Fall.

  • Gleichzeitig mit der style-Änderung müsstest Du auch den rowspan-Wert der Zeile mit dem FFF anpassen.



    Nein, genau das habe ich ausprobiert. Führt zu Chaos. Ausgeblendete Tabellenzeilen sind ja nicht weg, sondern nur ausgeblendet und mithin immer noch vorhanden, zählen also bei den rowspan's mit.

    Und du müsstest die <tr> ausblenden, nicht die <td>.



    Auch das habe ich ausprobiert. Führt zu nichts.


    Btw. würde ich keiner Tabellezelle einen "display: block;"-Wert zuweisen. Richtig wäre "display: table-cell;" in deinem Fall.

    OK, aber das Problem besteht ja um ausgeblendeten Fall,wenn display:none.

    Gruß
    WOlfgang

    mmh wenns immer die gleichen zeilen sind die du ausblendest,

    sind es nicht, im Gegenteil. Das ganze ist eine komplexe Baumstruktur, die in einer Datenbank liegt, von einem CGI-Skript ausgelesen und im Browser dargestellt wird. Die Applikation ist schon älter, die Datenstrukturen sind hochkomplex. Als neues Feature soll jetzt dazukommen, vor allem bei großen Bäumen Teilbereiche dynamisch ein- und ausblenden zu können.

    Ich dachte ich wäre da auf einem guten Weg, nur zeigt sich jetzt besagtes Problem, daß bei vielen ( > 10) ausgeblendeten Zeilen der Rest mehr Platz braucht als ihm zusteht.

    oder haste schon probiert dem sichtbaren teil ne feste höhe zu geben?


    Ja, geht nicht, wird schlicht ignoriert. Das Attribut clientHeight des entsprechenden Objekts enthält die aktuelle Höhe, leider ist das Ding read-only. :(

    denn es ist gut möglich, dass du an der stelle nichtma ne tabelle benötigst ;)



    In der Tat, :) aber wenn ich da ran gehe, kann ich gleich das ganze in 10 Jahren gewachsene Ding komplett neu schreiben, und dann trete ich lieber die Flucht nach vorn an und versuche mit den vergrößerten Zellen darstellungsmäßig klarzukommen, wenn es denn keine direkte Lösung gibt.

    Gruß&Dank
    Wolfgang

    Einmal editiert, zuletzt von Sweet_Angel (30. November 2010 um 15:17) aus folgendem Grund: zusammengeführt