Filoweb.it

Paginazione III


FB TW Pinterest whatsapp RSS FEED News letter
ASP
Paginazione III


<!--la riga seguente equivale all' include di ADOVB.INC-->

<!-- METADATA TYPE=" typelib" UUID=" 00000206-0000-0010-8000-00AA006D2EA4" NAME=" ADO Type Library" -->



<%



Set objRecordset = Server.CreateObject(" ADODB.Recordset" )

' modificare il path per puntare correttamente al database

strConnection = " Provider=Microsoft.Jet.Oledb.4.0;data source=" & server.mappath(" database.mdb" )



' numero di record che vogliamo mostrare per pagina – utilizziamo una costante

CONST RECORDMAX = 10

' controlla se sia stato passato il parametro <page>, cioè il numero di pagina

If Request.QueryString(" page" ).Count > 0 Then

intPageNum = CInt(Request.QueryString(" page" ))

Else

intPageNum = 1 ' non è stato passato, di default iniziamo dalla prima pagina

End If

With objRecordset

' il seguente è il tipo di cursore più performante – non possiamo però utilizzare la proprietà RecordCount (poco importa, non ci serve in questa sede…)

.CursorType = adOpenForwardOnly

' la localizzazione del cursore di default è lato server, noi la spostiamo sul client

.CursorLocation = adUseClient

' il tipo di Lock più performante

.LockType = adLockReadOnly

' creiamo un buffer di memoria locale - dove verranno stipati i record - uguale a RECORDMAX

.CacheSize = RECORDMAX

.PageSize = RECORDMAX

.Source = " SELECT * FROM tabella"

.ActiveConnection = strConnection

.Open ' eseguiamo la Query

' questo è importante: disconnettiamo il Recordset dalla sorgente dati (cioè il database).

' Uno dei maggiori vantaggi è dato dalla scalabilità: per 100 utenti che " scorrono" le pagine,

' non ci saranno altrettante connessioni e cursori aperti sul server. Per 1000 utenti idem.

Set .ActiveConnection = Nothing

intTotalPages = .PageCount

If NOT .EOF then

' questo è importante: grazie al metodo GetRows dell' oggetto Recordset recuperiamo

' SOLTANTO il numero di record necessari per la pagina e li stipiamo in un array.

.AbsolutePage = intPageNum

arrData = .GetRows(RECORDMAX)

intColsTot = Ubound(arrData,1) ' numero di colonne, cioè di campi

intRowsTot = Ubound(arrData,2) ' numero di righe, cioè di records

End If

End With

' Rilasciamo le risorse

objRecordset.Close:Set objRecordset = Nothing



' Questo ciclo mostra il contenuto dei campi di ciascun record

' ovviamente va adattato e reso meno " spartano" (è qui solo per esempio)

For i = 0 To intRowsTot

Response.Write " <BR>"

For j = 0 To intColsTot

Response.Write " " &arrData(j, i)

Next

Next



' Pagina precedente – mostra una freccia a sinistra

Response.Write " <P>"

If intPageNum > 1 Then

Response.Write( " <a href=" " ?page=" & intPageNum-1 &" " " ><-- </a>" )

End If



' Mostra la pagina corrente in BOLD (non cliccabile) + tutte le altre (cliccabili)

For i = 1 to intTotalPages

If i = intPageNum Then

Response.Write(" <b>" &i&" </b>" )

Else

Response.Write(" <a href=" " ?page=" &i&" " " > " &i&" </a>" )

End If

Next



' Pagina successiva – mostra una freccia a destra

If intPageNum < intTotalPages Then

Response.Write( " <a href=" " ?page=" &intPageNum+1&" " " > --></a>" )

End If



%>
FB TW Pinterest whatsapp RSS FEED News letter

filoweb.it è il sito personale di Filippo Brunelli
(c) 2017 Filippo Brunelli
Le immagini ed i testi contenuti nel sito filoweb.it sono di proprietà di Filippo Brunelli salvo diversamente indicato.
L'uso delle immagini e del testo è gratuito per uso personale ed è subbordinato alla citazione della fonte.
Brunelli Filippo declina ogni responsabilità per l'uso che viene fatto delle informazioni presenti nel sito filoweb.it.
FILOWEB.it Piccolo quaderno degli appunti. Argomento: ASP, Titolo:Paginazione III. Altri script riguardano: CSS, Jscript, .net, Classic Asp, HTML, Jquery, varie, url rewrite, pagina protetta da password, ecc. Altro su https://www.filoweb.it