Avatar billede lsskaarup Nybegynder
29. august 2005 - 12:15 Der er 41 kommentarer og
1 løsning

Fast række ved scroll

Jeg skal have lavet den effekt som nogle sikkert kender fra Excel, hvor man kan sætte f.eks. den øverste række til at være låst, så den ikke scroller med, hvis brugeren scroller ned af. Så vil brugeren altid kunne se hvad der står i øverste række.

Den effekt skal jeg også have, på en række i en tabel, men hvordan.? Framens er NO NO, kan jeg eventuelt gøre det med layers og hvordan så eller er der noget som er smartere?
Avatar billede roenving Novice
29. august 2005 - 12:18 #1
Tjah, du kan vel lægge den øverste række af en tabel udenfor en div, og så placere resten af tabellens indhold i en anden tabel inde i en div ...

-- men bemærk, at kolonnebredde kan være ret tricky at holde styr på !-)
Avatar billede lsskaarup Nybegynder
29. august 2005 - 12:55 #2
Den øverste række blev ikke låst
Avatar billede roenving Novice
29. august 2005 - 12:57 #3
Øeh, hvad ?-)

-- du har vel sat en defineret højde og f.eks. overflow:auto; på diven !-)
Avatar billede plazm Nybegynder
29. august 2005 - 13:18 #4
Du kan se her hvordan jeg har fusket mig igennem det, dog er det med height 100% =)

http://plazm.1go.dk/tests/test1.php
Avatar billede lsskaarup Nybegynder
29. august 2005 - 14:34 #5
Præcist, prøver lige om jeg kan tilpasse det til koden
Avatar billede plazm Nybegynder
29. august 2005 - 14:57 #6
ellers må du skrive så skal jeg hjælpe :)
Avatar billede lsskaarup Nybegynder
29. august 2005 - 16:33 #7
Får dog først kigget på det i morgen, forhåbentligt
Avatar billede lsskaarup Nybegynder
07. september 2005 - 10:04 #8
Nej, jeg har ikke lige kunnet få det til at virke. Komer lige med min kode, så I har en bedre mulighed for at hjælpe mig :)
Avatar billede lsskaarup Nybegynder
07. september 2005 - 10:13 #9
Jeg har for nemhedens skyld ikke kopieret hele koden, men kun det vigtige. Der hvor opdelingen skal begynde er ved linierne:

<td class="content" valign="top"><b><a href="#" onClick="return setSort('intern');">Intern<br \>s/t/p</a></b></td>

</tr>

Alt herefter skal der kunne scrolles i, uden at det før forsvinder ud af skærmen.

<form action="/salg/ordre/" method="post" name="ds" id="ds" style="display:inline;" autocomplete="off">
<input type="hidden" name="sort" value="<?php echo $sort; ?>">
<table width="400" border="0" cellspacing="2" cellpadding="0">
<tr>
<td class="title" colspan="3">Igangværende ordrer</td>
</tr>
<tr>
    <td class="content" valign="top">Ordrenr.:</td><td class="content" valign="top"><input type="text" name="q1" class="listform" style="width:60px;" value="<?php echo $_POST['q1']; ?>"></td>
    <td class="content" valign="top">Kunde:</td><td class="content" valign="top"><input type="text" name="q4"  value="<?php echo $_POST['q4']; ?>" class="listform" style="width:100px;"></td>
</tr>   
<tr>
    <td class="content" valign="top">Projektleder.:</td>
    <td class="content" valign="top">
        <select name="projektleder" size="1" class="listform" style="width:175px;">
            <option value=""></option>
                <?php while (list ($key, $val) = each ($PROJECTMANAGER)) {?>
                    <option value="<?php echo $key; ?>"<?php if ($_POST['projektleder'] == $key || (!isset($_POST['sort']) && $id == $key)) echo ' selected'; ?>><?php echo $val['navn']; ?></option>
                <?php }?>
        </select>
    </td>
    <td class="content" valign="top">Bygherre:</td>
    <td class="content" valign="top"><input type="text" name="q6"  value="<?php echo $_POST['q6']; ?>" class="listform" style="width:100px;"></td>
    <td class="content" valign="top">Produktionsmetode:</td>
    <td class="content" valign="top">
        <select name="produktionsmetode" size="1" class="listform" style="width: 155px;">
        <option value=""></option>
            <?php while (list ($key, $val) = each ($PRODUKTIONSMETODE)) {?>
                <option value="<?php echo $key; ?>"<?php if ($_POST['produktionsmetode'] == $key || (!isset($_POST['sort']) && $id == $key)) echo ' selected'; ?>><?php echo $val; ?></option>
            <?php }?>
        </select>
    </td>
</tr>
<tr>
    <td align="right"><input type="submit" name="submit2" value="Søg" class="submit"><br>&nbsp;</td>
</tr>
</table>
<table width="810" border="0" cellspacing="1" cellpadding="0">
<tr>

<?php
$antal = mysql_num_rows($sql)+1;//bruges til rowspan som opdeling af oversigten

?>
<td class="content" valign="top"><b><a href="#" onClick="return setSort('o5.r575a DESC');">F</a></b></td>

<td class="content" valign="top"><b><a href="#" onClick="return setSort('ordre asc');">Ordre</a></b></td>

<td class="content" valign="top"><b><a href="#" onClick="return setSort('levering');">Lev.<br \>uge</a></b></td>

<td class="content" valign="top" style="text-align: left;"><b><a href="#" onClick="return setSort('projektleder');">P.L.</a></b></td>

<td class="content" valign="top"><b><a href="#" onClick="return setSort('kunde');">Kunde</a></b></td>

<td class="content" valign="top"><b><a href="#" onClick="return setSort('bygherre');">Bygherre</a></b></td>

<td class="content" valign="top"><b><a href="#" onClick="return setSort('o5.r572 DESC');">OB sendt</a></b></td>

<td class="content" valign="top"><b><a href="#" onClick="return setSort('o5.r541 DESC, o5.r541a DESC');">Spe.-<br \>stål</a></b></td>

<!--<td class="content" valign="top"><b><a href="#" onClick="return setSort('o5.r542 DESC');">Klar <br \>til statik</a></b></td>-->
<td class="content" valign="top"><b><a href="#" onClick="return setSort('statik');">Klar <br \>til statik</a></b></td>

<td class="content" valign="top"><b><a href="#" onClick="return setSort('o5.r546 DESC');">Statik OK</a></b></td>

<td class="content" valign="top"><b><a href="#" onClick="return setSort('o5.r543 DESC');">Klar til<br \>opt.</a></b></td>

<td class="content" valign="top"><b><a href="#" onClick="return setSort('godkendelse');">Sendt til<br \>godk.</a></b></td>

<td class="content" valign="top"><b><a href="#" onClick="return setSort('o5.r544 DESC');">Godk. af<br \>kunde</a></b></td>

<td class="content" valign="top"><b><a href="#" onClick="return setSort('o5.r548 DESC');">OB retur</a></b></td>

<td class="content" valign="top"><b><a href="#" onClick="return setSort('o5.r552 DESC');">Kredit OK</a></b></td>

<td class="content" valign="top"><b><a href="#" onClick="return setSort('intern');">Intern<br \>s/t/p</a></b></td>

</tr>

<?php
    if (!mysql_num_rows($sql)) {
?>
<tr>
<td class="content" colspan="7">Ingen ordrer blev fundet.</td>
</tr>

<?php
    } else {
        $antal=0;
        while ($foo = mysql_fetch_assoc($sql)) {
            $antal++;
            $ntal = $antal%2;
            $farve="";
            $farve2="";
            if ($ntal!=0){
                $farve = "bgcolor=\"#F2F2F2\"";
            } else {
                $farve2 = "bgcolor=\"#F2F2F2\"";
            }

?>

    <tr>

<!--<td colspan="16"><div owerflow="auto" height="10%"><table border="0">--><tr>

<?//Fabrinsag eller ej

$fabrin="";
if ($foo['r575a']==1){
    $fabrin = "<b>F</b>";
}
?>

<td <?php echo $farve;?> class="content" valign="top" style="width: 10px; text-align: center";><?php echo $fabrin; ?></td>

    <td <?php echo $farve;?> class="content" valign="top" style="width: 60px; text-align: left;">
    <a href="java script:newWindow=openWin('/popupordre/ordre11/<?php echo $foo['id']; ?>/','pop2Win<?php echo $foo['id']; ?>');newWindow.focus();">
        <?php echo $foo['ordre']; if ($foo['rev'] > 0) echo " R".$foo['rev']; ?>
    </a>
</td>

.
.
.
fortsætter indtil der ikke er flere resultater i sql-forespørgelsen
Avatar billede roenving Novice
07. september 2005 - 10:42 #10
Kunne du ikke lave et simpelt eksempel med det, der kommer igennem til browseren ?-)
Avatar billede lsskaarup Nybegynder
07. september 2005 - 10:42 #11
Du mener outputtet?
Avatar billede plazm Nybegynder
07. september 2005 - 10:45 #12
ja det gør han ;)
Avatar billede roenving Novice
07. september 2005 - 10:45 #13
-- eller linke til et eksempel !-)
Avatar billede lsskaarup Nybegynder
07. september 2005 - 10:52 #14
Jeg kan ikke linke til eksemplet, da det kører som intranet.

Men jeg vil prøve at tegne det, som en anden Jørgen Clevin ;-)

Outputtet er forenklet:

tabelstart
--------------
| Overskrift |
---------------------------
| Søgefelt 1 | Søgefelt 2 |
----------------------------------------
| Søgefelt 3 | Søgefelt 4 | Søgefelt 5 |
----------------------------------------
|  Søg knap  |
--------------
tabelslut
tabelstart
--------------------------------
| Kolonneoverskrifter i alt 16 |
--------------------------------
|        Data fra DB          |
--------------------------------
tabelslut

Alt over "Data fra DB" skal forblive, så nå der scrolles på sql-resultatet, så kan man altså stadig se kolonneoverskrifterne og søgefelterne.
Avatar billede lsskaarup Nybegynder
07. september 2005 - 10:53 #15
Kolonneoverskrifterne og data fra DB er selvfølgelig er hver deres celle, men jeg gad ikke lige lave 16 x 2 celler :)
Avatar billede roenving Novice
07. september 2005 - 11:01 #16
Du kan kun gøre det med:

tabelstart
--------------------------------
| Kolonneoverskrifter i alt 16 |
tabelslut
divstart
tabelstart
--------------------------------
|        Data fra DB          |
--------------------------------
tabelslut
divslut

!-)

-- men det giver så potentielle problemer med kolonnebredder ...
Avatar billede lsskaarup Nybegynder
07. september 2005 - 11:05 #17
Lige for at få det afklaret. Hvad sker der så, men tabellen inden kolonneoverskrifterne, forbliver de også eller ?
Avatar billede roenving Novice
07. september 2005 - 11:12 #18
Hvis du sætter ind i en div og giver den højde og overflow:scroll, vil det kun være dens indhold, som scroller !-)
Avatar billede lsskaarup Nybegynder
07. september 2005 - 11:32 #19
Okay, det synes jeg at have prøvet, men jeg må have gjort noget forkert. Prøver lige
Avatar billede lsskaarup Nybegynder
07. september 2005 - 12:04 #20
Har nu sat det ind mellem de 2 tabeller, men det eneste der sker, er at kolonnebrederne for overskrifterne ændres.

</table>

<div owerflow="auto" height="10%">
<table>
<tr>
......
</tr>
</table>
</div>
Avatar billede lsskaarup Nybegynder
07. september 2005 - 12:07 #21
Hov, det kunne være man skulle stave overflow rigtigt, men det gør nu ingen forskel
Avatar billede lsskaarup Nybegynder
07. september 2005 - 12:12 #22
Måske skal jeg lige sige, at sitet er bygget lidt anderledes op.

Det fungerer, på den måde, at en index-side, opbygger en tabel. I 3 celler bliver der så hentet 3 andre sider i, henholdsvis menu, topbanner og selve indholdssiden (den vi knokler med nu).

Kan det have noget at sige?
Avatar billede lsskaarup Nybegynder
07. september 2005 - 12:15 #23
<div style="overflow: auto;" height="10%"> dutter heller ikke
Avatar billede olebole Juniormester
07. september 2005 - 12:22 #24
Avatar billede roenving Novice
07. september 2005 - 12:26 #25
Et simpelt eksempel:

<style type="text/css">
.ordreTabel{border:1px solid red;border-collapse:collapse;}
.ordreTabel td{width:65px;padding:2px;}
</style>
<table id="tableHead" class="ordreTabel">
    <tr>
      <td>Overskrift 1</td><td>Overskrift 2</td><td>Overskrift 3</td><td>Overskrift 4</td>
    </tr>
</table>
<div style="overflow:auto;height:300px;">
<table class="ordreTabel">
  <tbody>
    <tr>
      <td>Data 1</td><td>Data 2</td><td>Data 3</td><td>Data 4</td>
    </tr>
  </tbody>
</table>
</div>

-- mangfoldiggør data-tabelrækken, så kan du se ideen i dette meget forsimplede eksempel !-)
Avatar billede lsskaarup Nybegynder
07. september 2005 - 13:06 #26
Hmmm, roenving, dit forslag kommer lidt der hen ad. Men der ser ud som hver række bliver lavet med overflow ikke kun hele tabellen.

//Kun og hele i en os samme sætning... Lidt modsigende, men I forstår nok hvad jeg mener.
Avatar billede plazm Nybegynder
07. september 2005 - 13:07 #27
http://plazm.1go.dk/tests/test1.php
er det noget i den stil du vil have ?
Avatar billede lsskaarup Nybegynder
07. september 2005 - 13:11 #28
Ja, præcist, jeg kan bare ikke få det til at virke endnu
Avatar billede olebole Juniormester
07. september 2005 - 13:12 #29
lsskaarup >> Har du kikket på de to links, jeg lagde?
Avatar billede lsskaarup Nybegynder
07. september 2005 - 13:15 #30
olebole -> Ja, jeg har lige kigget lidt på dem, men ikke på kode bagved endnu. Men der er sådan set også som de skal være
Avatar billede roenving Novice
07. september 2005 - 13:17 #31
<div style="overflow:auto;height:300px;">
<table class="ordreTabel">
  <tbody>
    <tr>
      <td>Data 1</td><td>Data 2</td><td>Data 3</td><td>Data 4</td>
    </tr>
    <tr>
      <td>Data 1</td><td>Data 2</td><td>Data 3</td><td>Data 4</td>
    </tr>
    <tr>
      <td>Data 1</td><td>Data 2</td><td>Data 3</td><td>Data 4</td>
    </tr>
    <tr>
      <td>Data 1</td><td>Data 2</td><td>Data 3</td><td>Data 4</td>
    </tr>
    <tr>
      <td>Data 1</td><td>Data 2</td><td>Data 3</td><td>Data 4</td>
    </tr>
    <tr>
      <td>Data 1</td><td>Data 2</td><td>Data 3</td><td>Data 4</td>
    </tr>
    <tr>
      <td>Data 1</td><td>Data 2</td><td>Data 3</td><td>Data 4</td>
    </tr>
    <tr>
      <td>Data 1</td><td>Data 2</td><td>Data 3</td><td>Data 4</td>
    </tr>
    <tr>
      <td>Data 1</td><td>Data 2</td><td>Data 3</td><td>Data 4</td>
    </tr>
    <tr>
      <td>Data 1</td><td>Data 2</td><td>Data 3</td><td>Data 4</td>
    </tr>
    <tr>
      <td>Data 1</td><td>Data 2</td><td>Data 3</td><td>Data 4</td>
    </tr>
    <tr>
      <td>Data 1</td><td>Data 2</td><td>Data 3</td><td>Data 4</td>
    </tr>
    <tr>
      <td>Data 1</td><td>Data 2</td><td>Data 3</td><td>Data 4</td>
    </tr>
    <tr>
      <td>Data 1</td><td>Data 2</td><td>Data 3</td><td>Data 4</td>
    </tr>
    <tr>
      <td>Data 1</td><td>Data 2</td><td>Data 3</td><td>Data 4</td>
    </tr>
    <tr>
      <td>Data 1</td><td>Data 2</td><td>Data 3</td><td>Data 4</td>
    </tr>
    <tr>
      <td>Data 1</td><td>Data 2</td><td>Data 3</td><td>Data 4</td>
    </tr>
    <tr>
      <td>Data 1</td><td>Data 2</td><td>Data 3</td><td>Data 4</td>
    </tr>
    <tr>
      <td>Data 1</td><td>Data 2</td><td>Data 3</td><td>Data 4</td>
    </tr>
    <tr>
      <td>Data 1</td><td>Data 2</td><td>Data 3</td><td>Data 4</td>
    </tr>
    <tr>
      <td>Data 1</td><td>Data 2</td><td>Data 3</td><td>Data 4</td>
    </tr>
  </tbody>
</table>
</div>
Avatar billede lsskaarup Nybegynder
07. september 2005 - 14:01 #32
roenving -> det er jo det samme som du tidligere er kommet med. Jeg tror grunden til at jeg har problemer, skyldes at jeg jo dynamisk laver rækkerne, så der går sikkert noget galt, fordi placeringen af de forskellige ting er forkert.
Avatar billede lsskaarup Nybegynder
07. september 2005 - 14:28 #33
Okay, jeg tror det er fordi jeg ikke for sat en størrelse det rigtige sted, for jeg kan at nu, så betyder height på div ikke noget ?-)

Kommer lige med koden, som den ser ud nu.
Avatar billede lsskaarup Nybegynder
07. september 2005 - 14:32 #34
</table><!-- afslutter de fast overskrifter -->

<?php
    } else {?>

<div style="overflow:auto; height:57px;">
<table class="ordreTabel">
<tbody>
<?
        $antal=0;
        while ($foo = mysql_fetch_assoc($sql)) {
            $antal++;
            $ntal = $antal%2;
            $farve="";
            $farve2="";
            if ($ntal!=0){
                $farve = "bgcolor=\"#F2F2F2\"";
            } else {
                $farve2 = "bgcolor=\"#F2F2F2\"";
            }

?>

Herefter kommer hver række så. Der er så en rød ramme uden om hele datatabellen, ud fra roenving tidligere eks., men det er som om jeg ikke kan styre højden på denne.
Avatar billede lsskaarup Nybegynder
07. september 2005 - 15:21 #35
Ahhh, så kom den. Jeg begyndte simpelthen at lave en ordentlig indrykning af koden, også sættes roenvings forslag ind.

Nu virker det, så skal jeg bare have tilpasset kolonnebredder, damn...

Roenving ligger du et svar?
Avatar billede lsskaarup Nybegynder
08. september 2005 - 09:18 #36
Damn, det er godt nok svært at få tilpasset kolonnebredderne. Når jeg har givet overskriftstabellen en bredde, der svarer til bredden på scroll-tabellen minus bredden på scrollbaren, så burde der vel ikke være nogle problemer eller hvad?
Avatar billede lsskaarup Nybegynder
08. september 2005 - 11:16 #37
Mund jeg også lige kunne få jer til at hjælpe mig med størrelsesangivelserne. Det skal selvfølgelig nok give ekstra
Avatar billede lsskaarup Nybegynder
08. september 2005 - 15:11 #38
Jeg har nu næsten fået tilpasset alle celler, så ingen hjælp nødvendig der, men hold kæft et helvede
Avatar billede roenving Novice
08. september 2005 - 20:12 #39
Afhængig af data-størrelse, kunne jeg faktisk finde på at dublere det, så overskrift-rækken kun blev vist i den ene udgave, og ikke blev vist i den anden udgave !-)

-- men det er selvfølgelig under forudsætning, at der ikke er alvorlige problemer med at få det til rådighed med det samme, altså ved indernet-forbindelser små datamængder, eller intranet-forbindelser under tusindvis af poster !o]

-- els velbekomme '-)
Avatar billede lsskaarup Nybegynder
09. september 2005 - 16:30 #40
Okay, der røg jeg af i svinget. Hvilke udgaver er det du snakker om, jeg har kun en visning?
Avatar billede roenving Novice
11. september 2005 - 09:44 #41
At man faktisk udskrev data to gange, så tabellerne blev formatteret ens ...

-- men i den første udgave blev alle rækker undtaget den første ikke vist, mens i den anden udgave blev den første række skjult !-)

-- og tak for point ;~}
Avatar billede lsskaarup Nybegynder
11. september 2005 - 14:48 #42
Okay, hvordan ville du så gøre det helt præcist. Jeg tvivler på den kan betale sig i mit tilfælde, men derfor vil jeg jo gerne prøve det af.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester