<%
Dim Cn, Rs, page, rowcount, pagecounter, arrRecs, i, posts(2), Antal, pagecount, Pz
page = Request.Querystring("page")
If page="" Then page=1
rowcount=0
Set Cn = Server.CreateObject("ADODB.Connection")
Cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("db_.mdb")
Set Rs = Cn.Execute("Select falt1,falt2,falt3 From tbl_ Order By Id Desc")
If Rs.EOF Then
Rs.Close : Set Rs = Nothing
Cn.Close : Set Cn = Nothing
Response.Write "Inga poster i databasen än.."
Else
With Rs
.Close
.Cursortype=3
.Open
.Pagesize=15 'antalet poster per sida
End With
Rs.Absolutepage=cInt(page)
Antal = Rs.Recordcount
Pz = Rs.Pagesize
pagecount = ((Antal-1) \ Pz) -- 1
arrRecs = Rs.GetRows(Pz)
Rs.Close : Set Rs = Nothing
Cn.Close : Set Cn = Nothing
If IsArray(arrRecs) Then
For i = 0 To UBound(arrRecs,2) And rowcount < Pz
posts(0) = arrRecs(0,i) 'första fältet
posts(1)= arrRecs(1,i) 'andra fältet
posts(2)= arrRecs(2,i) 'tredje fältet
'glöm ej att för nya poster ändra siffrorna med +1
Response.Write posts(0) & " | " & posts(1) & " | " & posts(2)
Next
End If
'själva pagingen
If Antal > Pz Then
%><form method="get" action="sida.asp">
<select name="page" size="1" onChange="visaVal(this);">
<option>Sida</option>
<%
For pagecounter = 1 to Pagecount
Response.Write "<option value=""" & pagecounter & """>" & pagecounter & "</option>"
Next
%>
</select>
</form>
End If
End If
%>
Koden är otestad, men förhoppningsvis fungerar den. :)
Du har väl nån variabel vid namne intPageSize eller liknande?
intPageSize = 1
ObjRs.PageSize = IntPageSize
Du kan ladda om sidan när man valt i dropdownen och ändra värdet på intPageSize, så det blir nåt i stil med
VarPageSize = Request.Form("dropdown")
intPageSize = VarPageSize ' <---- där ändras den beroende på vad Request.Form("dropdown") innehåller
ObjRs.PageSize = IntPageSize
Om detta inte riktigt stämmer med din kod så får du gärna visa lite av din kod.
VarPageSize = Request.Form("dropdown")
If VarPageSize = "" then VarPageSize = "15"
intPageSize = VarPageSize ' <---- där ändras den beroende på vad Request.Form("dropdown") innehåller
ObjRs.PageSize = IntPageSize
Du måste nog ha med eventuella värden efter sida.asp i action i formen.
Sen kollar du med en villkorssats där du sätter antalet poster som ska visas per sida i pagingen:
Select Case Cint(Request.Querystring("antal"))
Case 15
antalat_poster = 15
Case 30
antalat_poster = 30
Case 60
antalat_poster = 60
Case Else
antalat_poster = 15
End Select
Sen använder du mitt javascript i head på sidan också:
SidB = Request.Querystring("SidBryt")
AntalRad = Request.Querystring("AntRad")
if cint(antalrad) < 1 then
AntalRad = 1
end if
' Kod för att hämta data från db...
SidSlut = cint(SidB) + cint(AntalRad) - 1
'Antal träffar i db
if SidSlut > ap.RecipeCol.Count then
SidSlut = ap.RecipeCol.Count
end if
if SidSlut<>0 Then
Nu visas: <%=AntalRad%> till <%=SidSlut%>
end if
for l = cint(AntalRad) to cint(SidSlut)
'Skriv ut data...
next
if AntalRad > 1 then
'Skriv ut bakåtpil
<a href="sida.asp?SidBryt=<%=Request.Querystring("SidBryt")%>&AntRad=<%=AntalRad - cint(Request.Querystring("SidBryt"))%>>Bakåt</a>
end if
if SidSlut <> ap.RecipeCol.Count then
'Skriv ut framåtpil
<a href="sida.asp?SidBryt=<%=Request.Querystring("SidBryt")%>&AntRad=<%=AntalRad + cint(Request.Querystring("SidBryt"))%>>Framåt</a>
end if
m_soderlund > Om jag står på sidan för post: 225 av 240 och vill istället för att visa 15 poster gå över till 60 poster/sida, falierar inte ditt skript då?
ironhead: det behöver scriptet inte göra. Du kan skicka vidare till startsidan, med variabeln antal så att det blir sida.asp?antal=60
Beroende på om du vill skicka tillbaka till post 225 så får du räkna ut vilken sida posten ligger på. 240/60 ger 4, och eftersom 240-60 är 180 och d 225-240 är större än 180, så skickar du vidare till &page=4 så att sidans url blir så här: sida.asp?antal=60&page=4
Det borde inte vara så svårt att skriva kod för att skicka vidare till rätt sida. :)
Vad gör Sidb och AntRad-variablerna? Är AntRad en variabel som har värdet för hur många pagingsidor det finns?
Om det fungerar så antar jag att det är okej.
Men varför har du Request.Form("antal") i ena villkorssatsen och Request.Querystring("antal") i andra villkorssatsen?
jag har en låååång sträng med variabler som jag skickar in till sidan och om jag postar med "get" så får jag inte med dessa värden.....och om jag bara har "request.form"....så får jag inte med "antal" när jag navigerar framåt eller bakåt mellan sidorna.