Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Artiklar / Titel på artikeln

Alternativ till traditionell paging

Postad 2002-11-09 av Mattias Lind i sektionen ASP.NET, C#, Okategoriserat med 6 Kommentarer | Läst av: 6038, Betyg: 73%

Förord

Eftersom paging är vanligt förekommande på hemsidor och då det stjäl en hel del prestanda från servern om man inte kombinerar det med metoden GetRows knåpade jag ihop ett alternativ till "traditionell" paging. Mitt alternativ bygger helt och hållet på metoden GetRows. Jag har inte jämfört detta alternativ med det traditionella pagingsättet men jag antar att man vinner en hel del prestanda med mitt alternativ. Koden är relativt simpel och lätt att konfigurera efter sina egna behov.
Innehåll
För att det ska vara lättare att förstå hur det funkar har jag valt att presentera mitt alternativ som ett länkdatabasexempel. Det finns redan flera artiklar och tips om GetRows på Pellesoft så om ni vill veta hur det fungerar rekommenderar jag att ni söker efter det själva.

Steg 1


Till att börja med deklarerar vi några variabler och läser in den querystring som innehåller vilken sida vi ska visa. Om ingen sida är vald visas den första sidan genom att intShow sätts till 0.


<%
Dim SQL, Conn, RS, noFindings, vektor, lastRecord, pageSize, intPage, intShow, intRow, i

noFindings = "False"

'Antal poster per sida
pageSize = 10

'Sidan som ska visas
intShow = request.querystring("show")

'Om ingen sida är vald visas den första sidan
if Len(intShow) = 0 then
intShow = 0
end if
%>

Sedan skapar vi en databaskoppling och sparar alla poster i en vektor genom metoden GetRows. Därefter stänger vi databaskopplingen.

<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=links.mdb"
Conn.Open

SQL = "SELECT URL, description, totalClicks FROM links ORDER BY URL"
Set RS = Conn.Execute(SQL)
'Kollar om databasen är tom
if not RS.BOF and not RS.EOF then
vektor = RS.GetRows() 'vektor(0,i) = URL; vektor(1,i) = description; vektor(2,i) = totalClicks
lastRecord = UBound(vektor,2) 'Sista posten i vektorn
else
noFindings = "True"
end if

Set RS = Nothing
Conn.Close
Set Conn = Nothing
%>

Steg 2


Det vi ska göra nu är att först kontrollera om det finns nåt i databasen. Sedan skriver vi ut tabellhuvudet och en rad med rubriker.

Vi räknar därefter ut hur många sidor (minus en) som kommer att behövas för att visa alla poster genom att dela antalet poster (minus en) med så många poster som vi valt att visa per sida (intPage = lastRecord\pageSize). Det knepiga är att hela tiden tänka minus en på grund av indexeringen i vektorer.

Nästa steg är att kontrollera ifall sista posten finns i det urval som gjorts. Detta gör vi med följande kod: if lastRecord < ((intShow*pageSize)+(pageSize-1)) then. Om den sista posten finns i urvalet ska vi bara visa posterna fram till sista posten och inte så många som bestäms av det maximala antalet poster per sida.

For-looparna skriver därefter ut posterna på vald sida.


<%
'Om databasen inte är tom visas resultatet
if not noFindings then
response.write "" & vbnewline
response.write " " & vbnewline
'Räknar ut hur många sidor det blir
intPage = lastRecord\pageSize

if lastRecord < ((intShow*pageSize)+(pageSize-1)) then
for i = intShow*pageSize to lastRecord
if (intRow Mod 2) then
response.write " " & vbnewline
else
response.write " " & vbnewline
end if
response.write " " & vbnewline
response.write " " & vbnewline
response.write " " & vbnewline
intRow = intRow + 1
next
else
for i = intShow*pageSize to ((intShow*pageSize)+(pageSize-1))
if (intRow Mod 2) then
response.write " " & vbnewline
else
response.write " " & vbnewline
end if
response.write " " & vbnewline
response.write " " & vbnewline
response.write " " & vbnewline
intRow = intRow + 1
next
end if
%>

Steg 3


Det sista vi gör är att skriva ut sidnummer ifall antalet poster överstiger det maximala antalet poster. Vi fetmarkerar även den sida som är aktiv.


<%
'Om det är fler poster än det antal poster per sida man valt
if lastRecord > (pageSize-1) then
response.write "
" & vbnewline
end if
response.write "
LänkAntal besök
" & vektor(1,i) & "" & vektor(2,i) & "
" & vektor(1,i) & "" & vektor(2,i) & "
Sida "
for i = 0 to intPage
if (i*pageSize) = (intShow*pageSize) then
response.write "" & i+1 & "  "
else
response.write "" & i+1 & "  "
end if
next
response.write "
" & vbnewline
end if
%>


Det var allt. Enkelt, eller hur? Om det trots allt är något ni inte förstår eller om ni vill att jag ska förklara något bättre får ni gärna skicka ett imail till mig.
Upp

6 Kommentarer


  1. Stefan Ekström
    6 aug 2003

    Fungerar artikel på clilliASP?


  2. Tyrone Fröberg
    14 aug 2003

    Funkar kalas på chilisoft


  3. Anna-Karin Söderberg
    13 nov 2004

    Jag gillar den här artikeln, tycker den är bra och har använt den här koden många gånger. Rekomenderar även andra att läsa den. Är man nybörjare så kanske den kan tyckas svår, men läser man ordentligt så förstår man.


  4. Johannes Strömberg
    13 feb 2005

    Den här artikeln var kalasbra! Tack för den hjälpen!


  5. Kristoffer Ljungqvist
    25 apr 2005

    Men om databasen är tom då är det bara vit sida och jag finner inte ut av var den delen är som man ska använda när det är t.om databas. Använder paging till en gästbok har inte användaren ett inlägg blir det bra vit sida. Men vill ändra på den vita sida som kommer upp. Men vet inte var den ligger någonstans i av alla else vilkoren i din kod.


  6. Jonas Boman
    3 aug 2006

    Tycker den är bra!

Skriv en kommentar på artikeln

Ditt betyg på artikeln



Kommentar:





Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 154
27 952
271 704
944
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies