Jag utför en sökning och ska dela upp RecSet så det blir 5 träffar per sida. Första sidan som kommer upp är helt korrekt men när jag byter sida, genom att klicka på länken till t.ex. träffsida 2, så utförs en ny sökning med en tom sträng så att jag får ut alla poster i tabellen istället för att visa den valda träffsidan i det RecSet som finns. Länken har du skrivit som <b>testp.asp?iPageCurrent=...</b>, men du läser av sidnumret som <b>Request.QueryString("page")</b>. Ändra därför länken till <b>testp.asp?page=...</b>. Oj jag hade skrivit fel i inlägget. I koden står det <b>testp.asp?page=...</b> inte <b>testp.asp?iPageCurrent=...</b> Det funkar på första sökningen, men när jag sen ska byta träffsida och se träffarna på sidan 2 så verkar det som det sker en ny sökning fast med en tom sträng så hela innehållet i tabellen jag sökt i visas. Du måste ju skicka med vilken sida som den ska fortsätta på, skickar du tillbaka med ett tomt värde så görs ju sökningen om. Skickar jag med ett tomt värde <b> href=""testp.asp?page=" & i & """>" & i &" </b> ? Jag ska titta lite närmare på detta senare idag. Tack för all hjälp Anna-Karin! <b> SQL = "SELECT * FROM (SUPPLIER INNER JOIN HOUSING ON SUPPLIER.SuppNo=HOUSING.SuppNo) WHERE HOUSING.HNo LIKE '%"&Request.Form("search")&"%'" </b>Problem med sidbyte vid paging
Jag har provat med alla de lösningar på paging jag har hittat men detta problem uppstår varje gång. Någon som har varit med om samma sak eller ser något fel i min kod?
Här är lite av min kod:
....
<%
iPageSize = 5
If Request.QueryString("page") = "" then
iPageCurrent = 1
Else
iPageCurrent = CInt(Request.QueryString("page"))
End if
RecSet.PageSize = iPageSize
RecSet.CacheSize= iPageSize
RecSet.cursorlocation = 3 'adUseClient
%>
.... Här öppnar jag conn, skriver SQLen och öppnar RecSet .....
<%
iPageCount = RecSet.PageCount
If iPageCurrent > iPageCount Then
iPageCurrent = iPageCount
End If
If iPageCurrent < 1 Then
iPageCurrent = 1
End If
If iPageCount = 0 Then
Responde.write "There are no matches!"
Else
RecSet.AbsolutePage = iPageCurrent
iRecordsShown = 0
Do while iRecordsShown < iPageSize And Not RecSet.EOF
%>
.....Här är det som ska visas från databasen.....
<%
iRecordsShown = iRecordsShown + 1
RecSet.MoveNext
Loop
End If
RecSet.Close
If iPageCount > 1 Then
For i=1 to iPageCount
If i = CInt(iPageCurrent) Then
Response.Write "[" &i& "] "
Else
Response.Write "" & i &" "
End If
Next
End If
%>
...Conn stängs och Conn och RecSet förstörs
Sidan heter testp.asp och jag kör mot en access databas.
/KajsaSv: Problem med sidbyte vid paging
Sv: Problem med sidbyte vid paging
Tack Per för att du påpekade detta.Sv: Problem med sidbyte vid paging
Jag har ingen aning om vad som är fel. Jag trodde att när länken pekar på <b>testp.asp?page</b> så ska inte <b>testp.asp</b> sidan köras igen?!Sv: Problem med sidbyte vid paging
Ta en titt på Artikel [Alternativ till traditionell paging] den brukar jag använda mig av, den kan vara lite knepig att sätta sig in i om man är ovan.
Jag brukar göra så när jag använder paging att jag bara hämtar ett eller två fält, sen när navigeringen fungerar då petar jag in html kod och resterande fält.
//Anna-KarinSv: Problem med sidbyte vid paging
Jag tittade lite snabbt på artikel du tipsade om och ska prova den lösningen oxå, men vid första anblick av lösningen ser jag inte att han har skrivit ut koden för hur man visar en annan sida än första sidan. Du har möjligt vis inte en sådan kodsnutt, jag är intresserad att se vad som skiljer sig där från det jag har skrivit.Sv: Problem med sidbyte vid paging
Jag tror att ni har liknande kod, men att han lägger upp den på ett annat sätt.
'Om ingen sida är vald visas den första sidan => här tittar han ju på om det kommer ett tomt värde eller inte
if Len(intShow) = 0 then
intShow = 0
end if
<%
'Om databasen inte är tom visas resultatet
if not noFindings then
response.write "<table width=""100%"" border=""0"" cellpadding=""2"" cellspacing=""1"">" & vbnewline
response.write " <tr><td>Länk</td><td>Antal besök</td></tr>" & vbnewline
'Räknar ut hur många sidor det blir
intPage = lastRecord\pageSize
'Här tittar han på vilken sida som man vill visa.
if lastRecord < ((intShow*pageSize)+(pageSize-1)) then
for i = intShow*pageSize to lastRecord
Response.write "<tr>"
response.write " <td>" & vektor(1,i) & "</td>" & vbnewline
response.write " <td>" & vektor(2,i) & "</td>" & vbnewline
response.write " </tr>" & vbnewline
intRow = intRow + 1
next
else
for i = intShow*pageSize to ((intShow*pageSize)+(pageSize-1)) '<=
Response.write "<tr>
response.write " <td>" & vektor(1,i) & "</td>" & vbnewline
response.write " <td>" & vektor(2,i) & "</td>" & vbnewline
response.write " </tr>" & vbnewline
intRow = intRow + 1
next
end if
Hoppas det hjälper lite mer.
//Anna-Karin
Sv: Problem med sidbyte vid paging
/KajsaSv: Problem med sidbyte vid paging
Nej jag tror SQL satsen ska vara rätt. Den fungerar bra vid sökningar utan paging.