Hej! Hej, Fördelen med ett recordset är att man kan lätt kan sorter urvalet på kolumner. Jag använder ofta uppdelning av ett recordset i sidor, speciellt på adminstrationssidor. Tror att du kan använda nedanstående kod i din applikation ...tack till Er som svarat!!! Jag har nu fixat ihop det så som jag ville ha det i nuläget - ser ut enligt följande:dela upp recordset
Hoppas någon har en bra lösning - jag har provat lite olika lösningar, men kört fast. Jag har ett recordset utan databas där jag loopar in filnamn med hjälp av FSO. Att jag loopar in dem i ett recordset är för att jag vill kunna sortera dem som jag vill. Som det är nu körs hela recordsetet ut, men jag vill dela upp det i 10 eller 5 per sida eller ngt i den stilen. Jag har försökt få ihop det, men jag vet inte vad som blir fel - har nu "gått in i vägen" & då blir man ibland lite blind - hoppas ngn kan öppna ögonen för mig. Här kommer koden som kör ut recordsetet utan siduppdelning:
<code>
<table border="0" cellpadding="0" cellspacing="0" width="100%" style="background-color: #000000;">
<% album = Request.Querystring("album")
Const adDBTimeStamp = 135
Const adVarChar = 200
Set rstFiles = Server.CreateObject("ADODB.Recordset")
rstFiles.Fields.Append "Filename", adVarChar, 255
rstFiles.Open , , 3, 3
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(Server.MapPath("images/photography/" & album & ""))
For Each File IN objFolder.Files
Call Add(File.Name, rstFiles)
Next
Set objFSO = Nothing
Set objFolder = Nothing
rstFiles.Sort = "Filename DESC"
If rstFiles.RecordCount > 0 Then
rstFiles.MoveFirst
While Not rstFiles.EOF
duh = Replace (rstFiles("Filename"),".jpg","")
text = Replace (duh,"_"," ") %>
<tr><td align="center">&album=<%=album %>" target="stage">" width="110" height="64" border="0" alt="<%=text %> " /></td></tr>
<% rstFiles.MoveNext
Wend
End If
Sub Add(ByVal fileName, ByRef rst)
rst.AddNew
rst("Filename") = fileName
rst.Update
End Sub %>
</table>
</code>Sv: dela upp recordset
En detalj först...jag tycker inte man ska använda Recordset till det här eftersom det inte har med databaser att göra. En array eller collection skulle bli mycket effektivare, men om du inte har några prestandaproblem så ok...go for it...men det känns lite "fel"
Ditt problem handlar egentligen bara om att justera två saker i loopen som listar bilderna. Det första är att inte alltid starta från början i recordsetet utan att i stället börja på t ex position 21 om du visar 10 bilder i taget och bläddrat fram två gånger. Det andra problemet är att avsluta loopen BÅDE när Recordset.EOF är true och när gränsen på 10 bilder är uppnådd. Oavsett vilket av dessa villkor som inträffar så måste du avsluta loopen. Du måste med andra ord hålla en siffra i minnet hela tiden och det är den startposition som du vill börja på. Den variabeln startar med värdet 1 och om användaren trycker på "Next page"-länken eller knappen så lägger du till 10 till den variabeln och uppdaterar sidan. På motsvarande sätt minskar du startvärdet om användaren trycker på "Previous page".
Om startvärdet är <=1 så ska inte du inte ha någon "Previous page"-länk och om startvärdet + 10 >= antalet filer så ska du inte visa någon "Next page"-länk.
Skapa tre nya funktioner som heter NextPage, PreviousPage samt UpdateList. NextPage ska öka startvärdet med 10 och sedan anropa UpdateList. PreviousPage minskar startvärdet med 10 och anropar sedan UpdateList. Funktionen UpdateList gör i princip det som din kod gör idag fast med förändringarna i loopen som jag nämnde ovan.
Det är principen för hur det skall fungera...säg till om du behöver exempelkod.Sv: dela upp recordset
Sv: dela upp recordset
[Dela in RecordSet i sidor]
Ha dé
SvenneSv: dela upp recordset
<code>
<table border="0" cellpadding="0" cellspacing="0" width="100%" style="background-color: #000000;">
<% album = Request.Querystring("album")
Const adDBTimeStamp = 135
Const adVarChar = 200
Set rstFiles = Server.CreateObject("ADODB.Recordset")
rstFiles.Fields.Append "Filename", adVarChar, 255
rstFiles.Open , , 3, 3
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(Server.MapPath("images/photography/" & album & ""))
For Each File IN objFolder.Files
Call Add(File.Name, rstFiles)
Next
Set objFSO = Nothing
Set objFolder = Nothing
rstFiles.Sort = "Filename DESC"
If rstFiles.RecordCount > 0 Then
rstFiles.MoveFirst
PageNr = request.querystring("page")
if PageNr = "" then PageNr = 1
rstFiles.pagesize = 10
rstFiles.absolutepage = PageNr
Pages = cint(rstFiles.pagecount)
CurrPost = 0
While Not rstFiles.EOF and CurrPost < rstFiles.pagesize
duh = Replace (rstFiles("Filename"),".jpg","")
text = Replace (duh,"_"," ") %>
<tr><td align="center">&album=<%=album %>" target="stage">" width="110" height="64" border="0" alt="<%=text %> " /></td></tr>
<% CurrPost = CurrPost + 1
rstFiles.MoveNext
Wend
If PageNr > 1 Then
Bw = "« backward"
Else
Bw = "« backward"
End if
If cint(PageNr) < Pages Then
Fw = "forward »"
Else
Fw = "forward »"
End if
End If
Sub Add(ByVal fileName, ByRef rst)
rst.AddNew
rst("Filename") = fileName
rst.Update
End Sub %>
<tr><td align="right" colspan="2"><br /><%=Bw %> | page <b><%=PageNr %></b> of <b><%=Pages %></b> | <%=Fw %></td></tr>
</table>
</code>