steckl: tabellen-ueberschrift auch beim scrollen anzeigen

Hallo,

ich habe eine ziemlich lange tabelle, die von einem perl-script erzeugt wird.
Es ist ziemlich wichtig, dass immer die jeweilige Spaltenueberschrift zu sehen ist, also habe ich es momentan so geloest, dass diese nach jeder 20. zeile wiederholt wird, was ich aber nicht sehr schoen finde.

also wuerde mich interessieren, ob es moeglich ist, eine zeile mit den ueberschriften immer oben im fenster anzuzeigen, auch wenn der user weiter runter scrollt.
ich habe es schon versucht, die ueberschriften in eine extra tabelle zu schreiben und diese habe ich in einem frame oberhalb angezeigt. hierbei war jedoch das problem, dass die spalten in der ueberschrift eine andere spaltenbreite als die spalten in der anderen Tabelle, hatten (was ja leider logisch ist). Und die Spaltenbreite fest in pixeln anzugeben ist wohl auch nicht benutzerfreundlicher als meine bisherige loesung.

fuer loesungsvorschlaege waere ich sehr dankbar.

mfG,
steckl

  1. hi,

    also wuerde mich interessieren, ob es moeglich ist, eine zeile mit den ueberschriften immer oben im fenster anzuzeigen, auch wenn der user weiter runter scrollt.

    Überschriften in THEAD, TBODY mit fester Größe und overflow:auto ...?

    ich habe es schon versucht, die ueberschriften in eine extra tabelle zu schreiben und diese habe ich in einem frame oberhalb angezeigt. hierbei war jedoch das problem, dass die spalten in der ueberschrift eine andere spaltenbreite als die spalten in der anderen Tabelle, hatten (was ja leider logisch ist). Und die Spaltenbreite fest in pixeln anzugeben ist wohl auch nicht benutzerfreundlicher als meine bisherige loesung.

    Da könnte Gernots Artikel Übergroße Tabellen in koordiniert scrollenden Frames weiterhelfen.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Danke fuer die schnelle Antwort.

      Überschriften in THEAD, TBODY mit fester Größe und overflow:auto ...?

      Das werd ich mal ausprobieren.

      Da könnte Gernots Artikel Übergroße Tabellen in koordiniert scrollenden Frames weiterhelfen.

      das fuehrt mir hier wohl etwas zu weit, da ich nicht zu viel zeit verschwenden will.

      mfG,
      steckl

      1. Überschriften in THEAD, TBODY mit fester Größe und overflow:auto ...?
        Das werd ich mal ausprobieren.

        Habs jetzt mal so versucht:

          
            <table border="1">  
              <thead style="">  
                <tr>  
                  <th>u 1</th>  
                  <th>u 2</th>  
                  <th>u 3</th>  
                </tr>  
              </thead>  
              <tbody style="overflow:auto; height:300px" >  
                <tr>  
                  <td>zeile</td>  
                  <td>zeile</td>  
                  <td>zeile</td>  
                </tr>  
                <tr>  
                  <td>zeilezeilezeile</td>  
                  <td>zeilezeilezeile</td>  
                  <td>zeilezeilezeile</td>  
                </tr>  
                <tr>  
                  <td>zeile</td>  
                  <td>zeile</td>  
                  <td>zeile</td>  
                </tr>  
                ...  
                ...  
                ...  
                <tr>  
                  <td>zeile</td>  
                  <td>zeile</td>  
                  <td>zeile</td>  
               </tr>  
                <tr>  
                  <td>zeile</td>  
                  <td>zeile</td>  
                  <td>zeile</td>  
                </tr>  
          
              </tbody>  
            </table>  
        
        

        das klappt im IE schonmal garnicht. Der macht dann jede zeile 300px hoch und scrollbalken gibts auch nicht.
        im FF funktioniert es schonmal teilweise. wenn man vertikal scrollt klappt alles, nur wenn man horizontal scrollt (was hier meiner ansicht nach garnicht gehen duerfte) wird die ueberschrift nicht mitgeschoben, so dass ueberschrift und zugehoerige spalte leicht versetzt dargestellt werden. was mache ich noch falsch?

        'position:' hilft hier auch nicht weiter, oder? habs mal ausprobiert, dann war aber die breite von thead nicht mehr gleich mit der von tbody.

        1. hi! mal ein "laienrat" (falls falsch - ignorieren)
          du erzeugst die Tabelle im div mit scrolbalken (sieh oben)
          und die überschriften in einer extratabelle drüber(drunter?) ABER
          um das problem mit den "Breiten" zu lösen , konntest du dies von perl erledigen lassen (k.a. ob es geht) indem du die länge der längsten inhalte bereits vom script bestimmen läßt und als "em" an die "überschriften tabelle gibst...dabei wäre es aber leichter/schneller die "überschiften" unterhalb der tabelle zu positionieren.. aber das war nur IMHO und lautgedacht  etc...
          (nicht mit den füßen treten!)
          MFG
          bleicher

          --
          __________________________-
          Menschen an sich , sind nicht schlecht - es sind nur ihre Taten (c).
    2. Jetzt lese ich häufig die Empfehlung, keine FRAMES zu verwenden, und dann das:

      Da könnte Gernots Artikel Übergroße Tabellen in koordiniert scrollenden Frames weiterhelfen.

      Was soll ich nun machen? Meine Frame-Anwendungen doch lassen?
      Gruß
      Gernot (nicht identisch mit dem Artikelschreiber)

      1. hi,

        Jetzt lese ich häufig die Empfehlung, keine FRAMES zu verwenden, und dann das:

        Da könnte Gernots Artikel Übergroße Tabellen in koordiniert scrollenden Frames weiterhelfen.

        Was soll ich nun machen?

        Entscheiden, ob du das brauchst - und ob es dir die Nachteile von Frames wert wäre.

        Meine Frame-Anwendungen doch lassen?

        Nur dort, wo sie erforderlich und berechtigt sind.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
      2. Hallo Gernot

        Jetzt lese ich häufig die Empfehlung, keine FRAMES zu verwenden, und dann das:

        Da könnte Gernots Artikel Übergroße Tabellen in koordiniert scrollenden Frames weiterhelfen.

        Was soll ich nun machen? Meine Frame-Anwendungen doch lassen?

        Die Lösung mit den Frames ist nicht wirklich schön, eine bessere browserübergreifende Lösung ist nur leider (soviel ich weiß) bisher niemandem eingefallen.

        Es ist auch kein "typisches" Frameset. Der Inhalt (die Tabelle selbst) ist nicht auf mehrere Dokumente verteilt. Verlinkt wird nie das Frameset, sondern immer die Tabelle selbst, die dann das Frameset nachlädt, wenn Javascript verfügbar ist, sonst bleibt es die ganz normale Tabelle.

        Auf Wiederlesen
        Detlef

        --
        - Wissen ist gut
        - Können ist besser
        - aber das Beste und Interessanteste ist der Weg dahin!
  2. Hallo,

    also wuerde mich interessieren, ob es moeglich ist, eine zeile mit den ueberschriften immer oben im fenster anzuzeigen, auch wenn der user weiter runter scrollt.

    Ja, klar.

    ich habe es schon versucht, die ueberschriften in eine extra tabelle zu schreiben ...

    vernünftiger Ansatz.

    und diese habe ich in einem frame oberhalb angezeigt.

    unnötig, ein div reicht.

    Guggst du hier mit dem Firefox:
    [link=http://www.aktivferien.de/tm3/v3/aussteller_a.htm]

    Verkleinere das Fenster und schaue, was passiert.

    Lieben Gruß, Kalle

    1. Hi,

      Guggst du hier mit dem Firefox:
      [link=http://www.aktivferien.de/tm3/v3/aussteller_a.htm]

      und wo guck ich mit dem IE? Die tabelle muss im IE und im FF (und am besten auch noch mit netscape) funktionieren.
      ansonsten waer das genau das was ich gesucht habe.
      Da jedoch der html-code fuer mich nicht ganz einfach nachzuvollziehen ist frage ich mich, ob er im IE auch funktionieren wuerde, bzw. ob es einfach waere diesen fuer den IE umzubiegen. wenn nicht wuerde ich mich ueber andere (falls moeglich noch einfachere) beispiele freuen.

      mfG,
      steckl

      1. Hallo Steckl,

        liest du noch mit?

        und wo guck ich mit dem IE? Die tabelle muss im IE und im FF (und am besten auch noch mit netscape) funktionieren.

        Habe hier eine Musterseite, die auch im IE funzt:

        http://www.aktivferien.de/v2/af000_de.htm

        Musst du mal selbst mit Daten füllen, damit du das Scrollen siehst.

        ansonsten waer das genau das was ich gesucht habe.

        Ja, fein.

        Gruß, Kalle

        1. Hallo Kalle,

          liest du noch mit?

          jo, bin nur gestern schon frueh ins bett.
          Danke, dass du mir noch helfen willst.

          und wo guck ich mit dem IE? Die tabelle muss im IE und im FF (und am besten auch noch mit netscape) funktionieren.

          Habe hier eine Musterseite, die auch im IE funzt:

          http://www.aktivferien.de/v2/af000_de.htm

          Musst du mal selbst mit Daten füllen, damit du das Scrollen siehst.

          ich hab mir deinen Quellcode mal lokal kopiert und versucht nachzuvollziehen. Ist eigentlich gar nicht so schwer (zum glueck ist da nur ein kleines java-script :)
          aber leider ist es wohl fuer meinen Anwendungsfall nicht geeignet, weil ich immer eine unterschiedliche Spaltenzahl anzeigen will (bis zu 20 Spalten) und man oft auch horizontal scrollen muss, was bei deinem Beispiel leider nicht klappt.
          ausserdem Funktioniert deine Tabelle wohl nur, wenn man die Spaltenbreite fest vorgibt, was in meinem Fall wohl auch nicht so gut ist, weil viele Felder lange texte oder sogar zusammenhaengende Zeichenketten beinhalten. Durch die zu langen Zeichenketten werden dann Ueberschriften versetzt vom rest der Tabelle dargestellt.

          Es ist wohl nicht moeglich, das ganze auf dynamische Spaltenbreiten (wie bei tabellen ohne Spaltenbreitenangabe) umzuschreiben, oder?

          mfG,
          steckl

  3. <div style="width:100%; height:100%; overflow:auto;">

    </div>

    um den teil der Tabelle knallen und mal schauen.
    Ich benutze das immer wenn ich innerhalb einer Zelle scrollen will, vll klappts ja auch so irgendwie bei dir.

    gruß, jens

    1. hi,

      <div style="width:100%; height:100%; overflow:auto;">
      </div>

      um den teil der Tabelle knallen und mal schauen.

      Div hat "um einen Teil einer Tabelle" absolut nichts verloren.

      gruß,
      wahsaga

      --
      /voodoo.css:
      #GeorgeWBush { position:absolute; bottom:-6ft; }
      1. Div hat "um einen Teil einer Tabelle" absolut nichts verloren.

        dann halt eine tabelle in eine Tabelle?!

        1. hi,

          Div hat "um einen Teil einer Tabelle" absolut nichts verloren.

          dann halt eine tabelle in eine Tabelle?!

          Und dann?

          gruß,
          wahsaga

          --
          /voodoo.css:
          #GeorgeWBush { position:absolute; bottom:-6ft; }
          1. ...nichts dann, ich dachte so könnte so irgendwie umsetzbar sei weil ich so auch mal nen scrollbalken inner tabelle geknallt habe und die überschrifft stehen geblieben ist.

            weiss aber auch nicht mehr genau wie

            theschaaf

            1. ...nichts dann, ich dachte so könnte so irgendwie umsetzbar sei weil ich so auch mal nen scrollbalken inner tabelle geknallt habe und die überschrifft stehen geblieben ist.

              Wohl kaum

              weiss aber auch nicht mehr genau wie

              eben, weil's so nicht geht.

              Struppi.

              --
              Javascript ist toll (Perl auch!)
              1. o man du sagst, ganz genau :D

                jetzt weiss ichs auch

                1. o man du sagst, ganz genau :D

                  jetzt weiss ichs auch

                  Es gibt übrigens eine Möglichkeit, hier findest du sie schnell http://www.google.de/search?hl=de&ie=UTF-8&sa=X&oi=spell&resnum=0&ct=result&cd=1&q=pure+css+fix+header&spell=1

                  Die ist allerdings bei weitem nicht so einfach, wie du es schilderst und ist nur bedingt einsetzbar (z.b. wegen fixen spaltenbreiten)

                  Struppi.

                  --
                  Javascript ist toll (Perl auch!)
  4. Hallo steckl,

    du könntest deine Tabelle spalten; in einen Bereich, in dem nur die Spaltenüberschriften und einen anderen Bereich, in dem nur der (übrige) Body der Tabelle angezeigt wird. Die gleiche Spaltenbreite kannst du mit COL-Elementen sicherstellen. Den unteren Bereich packst du in ein DIV-Element mit overflow:auto.

    Ganz astrein im Sinne der Barrierefreiheit ist das aber nicht, denn der Bezug zwischen den Spaltenüberschriften in der einen Tabelle zu den Spalten in der unteren Tabelle kann so bei nicht-visuellen Ausgabemedien nicht mehr hergestellt werden.

    Willst du diesen Bezug sicherstellen, so würde ich an deiner Stelle doch die in meinem Artikel vorgeschlagene Lösung bevorzugen.

    Gruß Gernot

  5. Hallo steckl,

    vielleicht würde dich auch eine etwas abgewandelte Version von Gernots Tabelle interessieren: Tabellen Header+"Spaltenheader" feststehend

    Auf Wiederlesen
    Detlef

    --
    - Wissen ist gut
    - Können ist besser
    - aber das Beste und Interessanteste ist der Weg dahin!
    1. Hallo detlef,

      vielleicht würde dich auch eine etwas abgewandelte Version von Gernots Tabelle interessieren: Tabellen Header+"Spaltenheader" feststehend

      danke fuer den link. ich glaube mit dem beispiel hier kann ich was anfangen. und falls nicht werd ich einfach nochmal nachfragen ;)

      mfG,
      steckl