webForumDet fria alternativet

Dela upp efter ett visst antal värden.

ASP

11 svar · 258 visningar · startad av Fredde Mannen

Medlem sedan nov. 20014 054 inlägg
Frågan#1

Jag har mitt lilla problem; jag hämtar information från en textfil på en annan server med HttpXML och lägger in allt i en array med att köra Split(variabel," ").

Sedan loopar jag ut allt med:

Response.Write("<table>")
For each item in arrString
Response.Write(<tr><td>" & item & "<td></tr>")
Next
Response.Write("</table>")

Allt raddas upp, japp! Men jag vill dela upp det så att den skriver ut i en tabell ungefär så här, alltså ett visst antal kolumner, säg 10 st, och efter att skrivit ut de första 10, så börjar den på en ny rad och skriv ut fortsättningen... osv.

t.ex.
item1 | item2 | item3 | item4 | item5
item6 | item7 | item8 | item9 | item10
item11 | item12

Hoppas ni förstår! :q :e

Medlem sedan nov. 20017 144 inlägg
#2

Lägg till en räknare.
i=1
i=i+1
if i=10 then Response.write "<br>" end if

Medlem sedan nov. 20014 054 inlägg
#3

Jesper T skrev:

Lägg till en räknare.
i=1
i=i+1
if i=10 then Response.write "<br>" end if

Hmm... om jag vill att resultatet ska visas så här:

<table>
<tr>item1<td>item2</td><td>item3</td></tr>
<tr>item4<td>item5</td><td>item6</td></tr>
osv...
</table>

Dessutom så med:

i = 1
i = i +1

if i = 10 Then
Response.Write("<br />")
End if

Så sätter han väl bara ett <br /> där i = 10 och sen raddar den upp som vanligt!? :q

Medlem sedan juli 20011 084 inlägg
#4

Är inte säker på att det är så här du menar... men testar ändå

Response.Write("<table><tr>")

For i = 0 to UBound(arrString)
  if(i mod 5 = 0) Then Response.Write "</tr><tr>"
  Response.Write("<td>"& arrString(i) &"<td>")
Next

Response.Write("</tr></table>")

%>
Medlem sedan nov. 20014 054 inlägg
#5

mozilla skrev:

Är inte säker på att det är så här du menar... men testar ändå

Response.Write("<table>")

For i = 0 to UBound(arrString)
  if(i mod 5 = 0) Then Response.Write "</tr><tr>"
  Response.Write("<td>"& arrString(i) &"<td>")
Next

Response.Write("</table>")

%>

Något sådant kan det nog vara.. men blir förvirrad, bör jag inte sätta en <tr> efter <table> ? eller ? :q

Medlem sedan juni 200032 967 inlägg
#6

Det kan nog tänkas passa att slänga in en <tr> ja.

Medlem sedan nov. 20017 144 inlägg
#7

Fredde Mannen skrev:

Så sätter han väl bara ett <br /> där i = 10 och sen raddar den upp som vanligt!? :q

Man kan nollställa räknaren också. ;)

Medlem sedan okt. 20023 030 inlägg
#8
Response.Write "<table><tr>"

x = 1
For i = LBound(arrString) To UBound(arrString)
    If x Mod 10 = 0 Then
        Response.Write "</tr><tr>"
        x = 1
    End If
    
    Response.Write "<td" & IIf((i = UBound(arrString)) And (x Mod 10 <> 0, " colspan=""" & (10 - (x Mod 10) + 1), "") & """>" & arrString(i) & "</td>"
    x = x + 1
Next

Response.Write "</tr></table>"

Otestat men bör vara säkrare än mozillas kod eftersom att man ska ha lika många kolumner på varje rad och om den sista raden innehåller t.ex. 3 "items" så får sista raden endast 3 kolumner vilket blir fel om alla andra rader innehåller 10 kolumner. Den här koden kollar hur många kolumner som fattas och lägger det som colspan i sista kolumnen. :)

R// Gjorde även en till variabel utifall att arrString känner för att inte börja med 1. ;)

Medlem sedan juni 200032 967 inlägg
#9

Får väl ta och slänga in funktionen Iif() också, som av någon helt oförklarlig anledning inte finns att tillgå i VBScript:

Function Iif(condition, truecase, falsecase)
    If (condition) then Iif = truecase else Iif = falsecase
End function

Mvh

Medlem sedan nov. 20014 054 inlägg
#10

Okey.... har nu fixat detta med att dela upp det i kolumner.... jag tänkte sen dela upp så att det blir en paging om det är mer än 60 värden i filen.

Kan jag dela upp en array på flera sida ex denna array:

arrString = Split(strString," ")
i = 0

For i = i to Ubound(arrString)
i = i + 1
Response.Write(arrString(i) & "<br />")
Next

Jag kan ju ränka ut antalet sidor med ex:

intPSida = 60
intTotalSidor = CInt(UBound(arrString)/intPSida)

UBound(arrString) blir lika med = 159

Sedan när jag skriver ut från 0 till ex. 60 går det bra.... och ex från 60 till 120 går bra. men sedan från 120 och framåt till ja 180 som det blir om jag har intPSida = 60.

Då dör den eftersom det bara finns 159 värden i arrayen.
Då till frågan: Kan jag avsluta Loopen när i = Ubound(arrString) ???

Medlem sedan juni 200032 967 inlägg
#11

Ja.

If i = Ubound(arrString) then Exit For

r: det blir fler likhetstecken om man trycker på shift.

Mvh

Medlem sedan nov. 20014 054 inlägg
#12

@nders skrev:

Ja.

If i = Ubound(arrString) then Exit For

r: det blir fler likhetstecken om man trycker på shift.

Mvh

Thanks mate. Då var nog denna tråd avklarad! :) *hoppas jag* :e

265 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)