Avatar billede kaptajnknas Nybegynder
03. oktober 2005 - 01:54 Der er 17 kommentarer og
2 løsninger

Tabeller og kolonner med ASP

Nogen der kan se en løsning på dette?
Jeg ønsker 4 tabeller ved siden af hianden, når scriptet har talt 4 skal de næste skrives på næste linie.

Jeg har prøvet med dette, men de kommer til at stå lodret.

<%

if not rs.eof then
do while not rs.eof

response.write "<table border=""1"" width=""20"" height=""20"" bordercolorlight=""#ffffff"" bordercolordark=""#ffffff"" cellpadding=""0"" cellspacing=""0"">"

response.write "<td align='center' width='20' bgcolor='#ffffff'>"

response.write "</td>"
pictureno = pictureno + 1
if pictureno=4 then
response.write "</tr><tr>"
pictureNo = 0
         
end if
rs.movenext
loop         
end if

%>
Avatar billede keysersoze Ekspert
03. oktober 2005 - 09:33 #1
måske noget a la dette;

<%
pictureno = 0
if not rs.eof then
response.write "<table border=""1"" width=""20"" height=""20"" bordercolorlight=""#ffffff"" bordercolordark=""#ffffff"" cellpadding=""0"" cellspacing=""0"">"
response.write "<tr>"
do while not rs.eof
response.write "<td align='center' width='20' bgcolor='#ffffff'>"
response.write "indhold"
response.write "</td>"
pictureno = pictureno + 1
if pictureno=4 then
response.write "</tr><tr>"
pictureNo = 0
end if
rs.movenext
loop
response.write "</table>"
end if
%>
Avatar billede softspot Forsker
03. oktober 2005 - 09:49 #2
Eller denne som også afslutter tabellen hvis der ikke lige nøjagtigt er et antal celler deleligt med 3:

<%
Set rs = conn.execute(SQL)

if not rs.eof then 
%>
<table border="0">
  <tr>
<%
  AntalKolonner = 3 ' Juster denne hvis der skal være et andet antal kolonner
  counter = 0
  do while not rs.eof
    response.Write "    <td>" & vbCrLf
    '
    ' TODO: Skriv dine informationer fra databasen her!
    '
    response.Write "    </td>"
    rs.movenext       

    counter = counter + 1
    if counter mod AntalKolonner = 0 then
      response.Write "  </tr>" & vbCrLf
      if not rs.eof then
        response.Write "  <tr>" & vbCrLf
      end if
    end if
  loop
  rs.close
  set rs = nothing

  ' udfyld resten af cellerne i den aktuelle række
  do while counter mod AntalKolonner <> 0
    response.Write "<td>&nbsp;</td>"
    counter = counter + 1
  loop
%>
  </tr>
</table>
<%
  Set conn = Nothing
end if
%>
Avatar billede kaptajnknas Nybegynder
03. oktober 2005 - 10:28 #3
Det virker, men kan denne tabel/kolonne bygges ind i stedet?

<table border="0" width="175" cellpadding="2">
  <tr>
    <td width="25%">
      <div align="center">
        <center>
        <table border="1" width="120" height="120" bordercolorlight="#333333" bordercolordark="#E9E9E9" cellpadding="0" cellspacing="0">
          <tr>
            <td width="100%" bgcolor="#E9E9E9">
              <p align="center">
              <%
              response.write  ("data")
              %> 
              </td>
          </tr>
        </table>
        </center>
      </div>
    </td>
  </tr>
</table>
Avatar billede kaptajnknas Nybegynder
03. oktober 2005 - 10:29 #4
Det virker, men kan denne tabel/kolonne bygges ind i stedet?

<table border="0" width="175" cellpadding="2">
  <tr>
    <td width="25%">
      <div align="center">
        <center>
        <table border="1" width="120" height="120" bordercolorlight="#333333" bordercolordark="#E9E9E9" cellpadding="0" cellspacing="0">
          <tr>
            <td width="100%" bgcolor="#E9E9E9">
              <p align="center">
              <%
              response.write  ("data")
              %> 
              </td>
          </tr>
        </table>
        </center>
      </div>
    </td>
  </tr>
</table>
Avatar billede softspot Forsker
03. oktober 2005 - 10:33 #5
<%
Set rs = conn.execute(SQL)

if not rs.eof then 
%>
<table border="0" width="175" cellpadding="2">
  <tr>
<%
  AntalKolonner = 4 ' Juster denne hvis der skal være et andet antal kolonner
  counter = 0
  do while not rs.eof
%>
    <td width="25%">
      <div align="center">
        <center>
        <table border="1" width="120" height="120" bordercolorlight="#333333" bordercolordark="#E9E9E9" cellpadding="0" cellspacing="0">
          <tr>
            <td width="100%" bgcolor="#E9E9E9">
              <p align="center">
              <%
              response.write "data"
              %> 
              </td>
          </tr>
        </table>
        </center>
      </div>
    </td>
<%
    rs.movenext       

    counter = counter + 1
    if counter mod AntalKolonner = 0 then
      response.Write "  </tr>" & vbCrLf
      if not rs.eof then
        response.Write "  <tr>" & vbCrLf
      end if
    end if
  loop
  rs.close
  set rs = nothing

  ' udfyld resten af cellerne i den aktuelle række
  do while counter mod AntalKolonner <> 0
    response.Write "<td>&nbsp;</td>"
    counter = counter + 1
  loop
%>
  </tr>
</table>
<%
  Set conn = Nothing
end if
%>
Avatar billede kaptajnknas Nybegynder
03. oktober 2005 - 10:37 #6
Meget fint, takker for hjælpen :O)
Avatar billede softspot Forsker
03. oktober 2005 - 10:39 #7
Velbekomme :)
Avatar billede kaptajnknas Nybegynder
03. oktober 2005 - 10:43 #8
Ganske kort.. hvordan får jeg øget afstanden i mellem kolonnerne?
Avatar billede softspot Forsker
03. oktober 2005 - 10:45 #9
Du kan evt. gøre den lidt mere generisk hvis du også beregner kolonnebredden på grundlag af antallet af kolonner:

Set rs = conn.execute(SQL)

if not rs.eof then 
%>
<table border="0" width="175" cellpadding="2">
  <tr>
<%
  AntalKolonner = 4 ' Juster denne hvis der skal være et andet antal kolonner
  counter = 0
  do while not rs.eof
%>
    <td width="<%=Int(100/AntalKolonner)%>%">
      <div align="center">
        <center>
        <table border="1" width="120" height="120" bordercolorlight="#333333" bordercolordark="#E9E9E9" cellpadding="0" cellspacing="0">
          <tr>
            <td width="100%" bgcolor="#E9E9E9">
              <p align="center">
              <%
              response.write "data"
              %> 
              </td>
          </tr>
        </table>
        </center>
      </div>
    </td>
<%
    rs.movenext       

    counter = counter + 1
    if counter mod AntalKolonner = 0 then
      response.Write "  </tr>" & vbCrLf
      if not rs.eof then
        response.Write "  <tr>" & vbCrLf
      end if
    end if
  loop
  rs.close
  set rs = nothing

  ' udfyld resten af cellerne i den aktuelle række
  do while counter mod AntalKolonner <> 0
    response.Write "<td>&nbsp;</td>"
    counter = counter + 1
  loop
%>
  </tr>
</table>
<%
  Set conn = Nothing
end if
%>
Avatar billede softspot Forsker
03. oktober 2005 - 10:46 #10
Det kunne du f.eks. gøre ved at sætte cellspacing på tabellen, men så er det i begge retninger du øger, da det er en generel afstand mellem cellerne...
Avatar billede kaptajnknas Nybegynder
03. oktober 2005 - 10:48 #11
Man kan ikke sætte "vbCrLf" eller "&nbsp;" i response.write ?
Avatar billede softspot Forsker
03. oktober 2005 - 10:51 #12
Jo, det er nok snarere &nbsp; end vbCrLf du skal benytte så...
Avatar billede softspot Forsker
03. oktober 2005 - 10:53 #13
Men jeg vil da hellere anbefale at du sætter en class på alle dine tabelceller (kan godt være den samme class), for så kan du styre spacing via en CSS-style (padding) og den kan desuden styres i hver retning uafhængig af de andre...
Avatar billede kaptajnknas Nybegynder
03. oktober 2005 - 10:57 #14
class og css er næsten aldrig hørt, så det tror jeg nok jeg venter med.
Men hvis man bare kan sætte mellemrum eller måske en kollonne mere ind med ""ffffff"" baggrund og kanter?
Avatar billede softspot Forsker
03. oktober 2005 - 11:21 #15
Hvor er det du skal have mere plads i dine celler (i siderne eller top/bund)?

Du kan rimelig smertefrit indsætte en inline-style som så bliver gentaget for hver celle i tabellen, således:

<%
Set rs = conn.execute(SQL)

if not rs.eof then 
%>
<table border="0" width="175" cellpadding="2">
  <tr>
<%
  AntalKolonner = 4 ' Juster denne hvis der skal være et andet antal kolonner
  counter = 0
  do while not rs.eof
%>
    <td width="<%=Int(100/AntalKolonner)%>%" style="padding:0 10px">
      <div align="center">
        <center>
        <table border="1" width="120" height="120" bordercolorlight="#333333" bordercolordark="#E9E9E9" cellpadding="0" cellspacing="0">
          <tr>
            <td width="100%" bgcolor="#E9E9E9">
              <p align="center">
              <%
              response.write "data"
              %> 
              </td>
          </tr>
        </table>
        </center>
      </div>
    </td>
<%
    rs.movenext       

    counter = counter + 1
    if counter mod AntalKolonner = 0 then
      response.Write "  </tr>" & vbCrLf
      if not rs.eof then
        response.Write "  <tr>" & vbCrLf
      end if
    end if
  loop
  rs.close
  set rs = nothing

  ' udfyld resten af cellerne i den aktuelle række
  do while counter mod AntalKolonner <> 0
    response.Write "<td>&nbsp;</td>"
    counter = counter + 1
  loop
%>
  </tr>
</table>
<%
  Set conn = Nothing
end if
%>


Som du måske kan se, så har jeg indsat denne inline-style:

style="padding:0px 10px"

som betyder at jeg lægger lidt plads til i siderne (10 pixels for at være mere præcis). Hvis du også vil have noget lagt til i toppen og bunden, kan du udskifte 0px med det antal pixels du gerne vil have tilføjet i toppen og bunden.
Avatar billede kaptajnknas Nybegynder
03. oktober 2005 - 11:36 #16
Lige præcis, perfekt :O)
Venter lige på keysersone og fordeler points
Avatar billede keysersoze Ekspert
03. oktober 2005 - 12:13 #17
svar - såfremt jeg har bidraget med noget...
Avatar billede kaptajnknas Nybegynder
03. oktober 2005 - 12:15 #18
Jeg fordeler 170 / 30 ok
Avatar billede softspot Forsker
03. oktober 2005 - 12:42 #19
Takker for point :)
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
Kurser inden for grundlæggende programmering

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