ASP Classic

Seitenweise Datensätze, Teil 2

Standardisierte Seitennavigation

Im ersten Teil dieses zweiteiligen Artikels wurde dargelegt, wie man Datensätze aus einer Datenbank per ADO "portioniert', d.h. eine Datensatzuntermenge ("Seite") ausgibt. In diesem Teil soll es nun darum gehen einen Navigator zu erzeugen, mit dem der Benutzer zu den möglichen Seiten navigieren kann. Ähnlich den Navigatoren von Suchmaschinen.

Beispiel:    vorherige Seite -- Seite 1 -- Seite 2 -- Seite 3 -- nächste Seite

Ausgangspunkt ist eine Tabelle mit 330 Datensätzen, die in Portionen zu je 25 Datensätzen auf einer Seite aufgeteilt werden. Es ergibt sich somit eine Gesamtseitenanzahl von 14. Eine noch überschaubare Anzahl. Gehen die Datensatzmengen jedoch in den hohen 3-stelligen Bereich oder höher, so wird klar, dass der angedachte horizontale Navigator nicht alle Seiten enthalten kann. Eine Möglichkeit dieses Problem zu lösen ist die Darstellung einer festgelegten ungeraden Anzahl von Seitenummern, wobei z.B. immer nur die zwei Ziffern kleiner und zwei Ziffern größer der aktuell angezeigten Seite dargestellt werden.

Beispiel für Seite 9:     vorherige Seite -- Seite 7 -- Seite 8 -- Seite 9 -- Seite 10 -- Seite 11 -- nächste Seite

Jeder Link zeigt auf die ASP-Seite mit dem Parameter "page", der die anzuzeigende Seite angibt, z.B. show.asp?page=3. Befindet sich der Benutzer auf der ersten bzw. letzten Seite, so müssen natürlich die Links "vorherige Seite" bzw. "nächste Seite" entfallen.

Sollen mehrere Seiten eines Webs einen solchen Navigator enthalten, macht es Sinn eine Funktion zu schreiben, die auf den entsprechenden Seiten lediglich eingebunden werden muss. Ein solche Funktion ist GeneratePageNav.

Die Funktion besitzt 3 Eingabeparameter:

  • intRecCount - die Gesamtanzahl der Datensätze
  • intRows - Anzahl der Datensätze auf einer Seite
  • intPage - Nummer der aktuellen Seite
  • strLink - Rumpf-URL, die beim Klick auf einen Navigations-Link geladen werden soll

In unserem Beispiel würde der Aufruf wie folgt aussehen, wobei die Variable intPage den Wert des Parameters "page" der aktuellen Seite repräsentiert und zuvor per Request.QueryString ausgelesen wurde.

GeneratePageNav(330, 25, intPage, "show.asp?page=")

Die Funktion

Public Function GeneratePageNav(intRecCount, intRows, intPage, strLink)

   '=== Generierung eines 5-teiligen Seitennavigators

   'Seitenanzahl berechnen
   intPages = intRecCount \ intRows

   'eine Seite mehr, wenn Rest übrigbleibt
   if intRecCount Mod intRows > 0 then intPages = intPages + 1

   'sicherstellen, dass aktuelle Seite kleiner ist als die Gesamtanzahl
   if intPage > intPages then intPage = intPages

   'Seitenzahlen festlegen
   if intPage = 1 Or _
      intPage = 2 Or _
      intPage = 3 then
      int1 = 1
      int2 = 2
      int3 = 3
      int4 = 4
      int5 = 5
   elseif intPage = intPages - 2 Or _
      intPage = intPages - 1 Or _
      intPage = intPages then
      int1 = intPages - 4
      int2 = intPages - 3
      int3 = intPages - 2
      int4 = intPages - 1
      int5 = intPages
   else
      int1 = intPage - 2
      int2 = intPage - 1
      int3 = intPage
      int4 = intPage + 1
      int5 = intPage + 2
   end if

   'nicht benötigte Seitenzahlen nullen
   if int2 > intPages then int2 = 0
   if int3 > intPages then int3 = 0
   if int4 > intPages then int4 = 0
   if int5 > intPages then int5 = 0

   'String für Vorspann erstellen
   strNav = "Seiten:  "

   'String für Anfang erstellen
   If intPage <> 1 and intPage <> 0 then
      strNav = strNav & "<a href=" & strLink & intPage - 1 & _
         ">vorherige Seite</a>"
   else
      strNav = strNav & "<span class=light>zurück</span>"
   end if
   strNav = strNav & "&nbsp;--&nbsp;"

   'String für ersten Teil erstellen
   if int1 > 0 then
      if int1 = intPage then
         strNav = strNav & "<span class=selected><b>" & _
            int1 & "</b></span>"
      else
         strNav = strNav & "<a href=" & strLink & int1 & ">" & _
            int1 & "</a>"

      end if
      strNav = strNav & "&nbsp;--&nbsp;"
   end if

   'String für zweiten Teil erstellen
   if int2 > 0 then
      if int2 = intPage then
         strNav = strNav & "<span class=selected><b>" & _
            int2 & "</b></span>"
      else
         strNav = strNav & "<a href=" & strLink & int2 & ">" & _
            int2 & "</a>"
      end if
      strNav = strNav & "&nbsp;--&nbsp;"
   end if

   'String für dritten Teil erstellen
   if int3 > 0 then
      if int3 = intPage then
         strNav = strNav & "<span class=selected><b>" & _
            int3 & "</b></span>"
      else
         strNav = strNav & "<a href=" & strLink & int3 & ">" & _
            int3 & "</a>"
      end if
      strNav = strNav & "&nbsp;--&nbsp;"
   end if

   'String für vierten Teil erstellen
   if int4 > 0 then
      if int4 = intPage then
         strNav = strNav & "<span class=selected><b>" & _
            int4 & "</b></span>"
      else
         strNav = strNav & "<a href=" & strLink & int4 & ">" & _
            int4 & "</a>"
      end if
      strNav = strNav & "&nbsp;--&nbsp;"
   end if

   'String für fünften Teil erstellen
   if int5 > 0 then
      if int5 = intPage then
         strNav = strNav & "<span class=selected><b>" & _
            int5 & "</b></span>"
      else
         strNav = strNav & "<a href=" & strLink & int5 & ">" & _
            int5 & "</a>"
      end if
      strNav = strNav & "&nbsp;--&nbsp;"
   end if

   'String für Ende erstellen
   if intPage <> intPages then
      strNav = strNav & "<a href=" & strLink & intPage + 1 & _
         ">nächste Seite</a>"
   else
      strNav = strNav & "<span class=light>nächste Seite</span>"
   end if

   GeneratePageNav = strNav

End Function

Downloads

seitennavigator.zip
kick it on dotnet-kicks.de AddThis 0 wikio-Stimme(n) Trackback-Url...

Schlagworte

Keine Kommentare bislang...

Dein Kommentar hierzu...


Kommentar-Feed für diesen Beitrag
Gravatare werden unterstützt .:. eMail-Adressen werden nicht veröffentlicht
 

RSS-Feed

Die URL des Standard-Newsfeed von zerbit.de lautet:

http://www.zerbit.de/rssfeed.aspx

Login


 

 

Statistik



kürzlich kommentiert

Artikel 29

  • Datum: 24.04.2005
    Kategorie: ASP Classic
    Zugriffe: 1.078
    Kommentare: 0
    Trackbacks: 0

Letzte Beiträge

Kategorien

Buttons & More

Blog-Roll

Banner Piraten-Partei