Kunne ikke forstille mig at det var hurtigere. Det er måske lidt hurtigere at løbe et array igennem i stedet for et Recordset, men den tid er hurtig tabt på GetRows funktionen, som jo skal løbe HELE recordset igennem og smide data over i arrayet. Også kan du desuden ikke udskrive værdierne med deres navne længre, men må bruge array indexseringen hvilket gør din kode uforstålig:
response.write rs("navn") Mod: response.write myArr(3,1) <-- Hvordan skulle man vide at det er navnet??
Jeg vil anbefale at holde dig til "almindlig" paging.
Response.Write "<P>" if iStart > 0 then 'Show Prev link Response.Write "<A HREF='GetRows.asp?page=" & iStart-iOffset & "'>Previous " & iOffset & "</A>" end if
if iStop < iRows then 'Show Next link Response.Write " <A HREF='GetRows.asp?page=" & iStart+iOffset & "'>Next " & iOffset & "</A>" end if
Han mangler så lige at sammenligne med et "almindelig" paging script. Så det kan godt være det går hurtigt med GetRows men uden kunne det evt gå endnu hurtigere.
Dit script er på ingen måder optimal. Du ALLE rækker ud med getRows. Det optimale er at hoppe til rækken du starter i med rs.move(StartRække) koden, også kun trække de rækker ud du skal bruge med GetRows(antalRækker)
Åben dit rs som et recordset i stedet: set rs = Server.CreateObject("ADODB.Recordset") rs.open sql, Connect, 1, 1
Så kan du få det totale antal rækker med: antal = rs.recordCount
Ud fra den kan du lave dine 1,2,3... når du ved hvormange rækker du viser på hver side.
Så er det jo bare at bruge det du har nu da det er hurtigere :o)
I stedet for at bruge rs.open metoden kan du også bruge ubound(aResults) til at få antallet af records. Det kræver dog at du ligger alle rækker i arrayet.
jeg trækker nu total ud og det virker når jeg gør sådan her:
TotalSider = Round(intRecords/iOffset)
For i = 1 to TotalSider
If i = 1 Then LinkTal = 0 Else LinkTal = iOffset + LinkTal End If
If iStart = LinkTal Then Response.write "<strong>[" End If Response.Write "<a href='default.asp?Sub="&Request.Querystring("Sub")&"&Cat="&Request.Querystring("Cat")&"&page=" & LinkTal & "'>" Response.Write i Response.Write "</a> " If iStart = LinkTal Then Response.write "]</strong>" End If
next
Dog ser det lidt vildt ud når den lige laver 360 sider med 30 records på hver, kan man evt gøre så den kun viser 10 sider frem og op til 10 tilbage ?????
Jeg må nok indrømme at jeg fatter minus af den kode du har der :o)
Men du må da vide hvilken side du er på ud fra "page", også lave en sammenligning med LinkTal. Dette er bare for at give dig en ide:
AktuelSide = cInt(rq("page")) ..
if (LinkTal-AktuelSide) >-10 and (LinkTal-AktuelSide)<10 then If iStart = LinkTal Then Response.write "<strong>[" End If Response.Write "<a href='default.asp?Sub="&Request.Querystring("Sub")&"&Cat="&Request.Querystring("Cat")&"&page=" & LinkTal & "'>" Response.Write i Response.Write "</a> " if iStart = LinkTal Then Response.write "]</strong>" End If end if
lol det er bare cool Fennec. Grunden til at jeg prøvede med GetRows var at min siden loadede så laaaangsom. Efter at jeg havde sat scriptet op ja så kørte det en anelse hurtiger men ikke som jeg havde forventet. En ven siger at jeg skal prøve at sætte fulde URLer ind i mine Iframes (der er 5 af dem på siden) og så kom der knald på nu loader den perfekt og jeg har smidt det gamle paging på igen. du kan se siden www.killmyday.com Kunne vi ikke dele de point for da du var skeptisk over for GetRows var jeg jo nød til at spørge et par venner også og nu virker det som det skal ?
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.