Filoweb.it

Paginazione III


FB TW G+ 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 G+ 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 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 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