Cette pagination utilise le curseur 0, qui est Rs.Open Sql,Conn,0,1. Mais ça ne semble pas beaucoup plus rapide, 10
Le temps de pagination pour 10 000 éléments de données est supérieur à 300 millisecondes.
<%
Page de classe
Page actuelle privée
Page privéeN
URL privée
TempStr privée
Informations d'erreur privées
PrivéIsErr
Enregistrement total privé
Page totale privée
PageRs publics
TempA privé(11)
Privé TempB(8)
'------------------------------------------------ - ---------
Sous-classe privée_Initialize()
CurrPage=1'//La page actuelle est affichée comme première page par défaut
PageN=10'//Par défaut, 10 données sont affichées sur chaque page
UrlStr="#"
TempStr=""
ErrInfo="ErrInfo :"
EstErr=Faux
Fin du sous-marin
Sous-classe privée_Terminate()
Si IsObject (PageRs) Alors
PageRs.Fermer
Définir PageRs = Rien
Fin si
Effacer TempA
Effacer TempB
Fin du sous-marin
'------------------------------------------------ - ---------
'//Obtenir le numéro de la page actuelle
Propriété publique Laissez CurrentPage (Val)
Page Curr=Val
Propriété de fin
Propriété publique Obtenir CurrentPage()
PageActuelle=PageActuelle
Propriété de fin
'//Obtenir le nombre d'éléments affichés sur chaque page
Propriété publique Laissez PageNum (Val)
PageN=Val
Propriété de fin
Propriété publique Obtenir PageNum()
Numéro de page = Numéro de page
Propriété de fin
'//Obtenir l'URL
URL de location de propriété publique (Val)
UrlStr=Val
Propriété de fin
Propriété publique Obtenir l'URL()
Url=UrlStr
Propriété de fin
'//Obtenir le modèle
Propriété publique Laisser Temp (Val)
TempStr=Val
Propriété de fin
Propriété publique Obtenir Temp()
Temp=TempStr
Propriété de fin
'------------------------------------------------ - ----------
Sous-exécutif public (Sql, ConnObj)
En cas d'erreur, reprendre ensuite
Définir PageRs=Server.CreateObject("ADODB.RecordSet")
PageRs.CursorLocation = 3 'L'utilisation de curseurs côté client peut améliorer l'efficacité
PageRs.PageSize = PageN 'Définir le nombre d'enregistrements affichés sur chaque page du jeu d'enregistrements de pagination
PageRs.Open SQL,ConnObj,0,1
Si Err.Number<>0 Alors
Err.Effacer
PageRs.Fermer
Définir PageRs = Rien
ErrInfo=ErrInfo&"Erreur lors de la création ou de l'ouverture du jeu d'enregistrements..."
EstErr=Vrai
Réponse.Write ErrInfo
Réponse.Fin
Fin si
TotalRecord=PageRs.RecordCount'//Et s'il vaut 0 ?
Si TotalRecord>=1 Alors
'------------------------------------------------ - --------------------------commencer
'//Calculez le nombre total de pages, Ps, pourquoi ne pas utiliser PageRs.PageCount ?
'Si TotalRecord Mod PageN=0 Alors
'TotalPage=PageRs.RecordCountPageN
'Autre
'TotalPage=PageRs.RecordCountPageN
'TotalPage=Abs(Int(TotalPage))
'Fin si
TotalPage=PageRs.PageCount
'//Traitement du numéro de page actuellement reçu, la valeur par défaut est 1, donc s'il ne s'agit pas d'un type numérique, ce sera 1
Si IsNumeric (CurrPage) Alors
Page Curr = CLNg (Page Curr)
Si CurrPage<1 Alors CurrPage=1
Si CurrPage>TotalPage Alors CurrPage=TotalPage
Autre
'//Dim M:M="":IsNumeric(M)=Vrai
Page Courante=1
Fin si
'------------------------------------------------ - -------------------------Finition
Autre
Page totale = 0
Page Courante=1
Fin si
'//
PageRs.AbsolutePage = CurrPage 'absolutepage : Placer le pointeur sur le début d'une page
PageRs.PageSize=PageN
Fin du sous-marin
Sous-initialisation privée()
'Tempérament privéA(10)
TempA(1)="{N1}" '//Page d'accueil
TempA(2)="{N2}"'//Page précédente
TempA(3)="{N3}"'//Page suivante
TempA(4)="{N4}"'//Dernière page
TempA(5)="{N5}"'//Numéro de la page actuelle
TempA(6)="{N6}"'//Nombre total de pages
TempA(7)="{N7}"'//Nombre d'éléments par page
TempA(8)="{N8}"'//Nombre total d'articles
TempA(9)="{L}"'//Étiquette de début de boucle
TempA(10)="{N}"'//Étiquette unique dans la boucle : numéro de page
TempA(11)="{L/}"'//Étiquette de fin de boucle
'Température privéeB(8)
TempB(1)="Accueil"
TempB(2)="Page précédente"
TempB(3)="Page suivante"
TempB(4)="Dernière page"
TempB(5)=CurrPage'//Numéro de la page actuelle
TempB(6)=TotalPage'//Nombre total de pages
TempB(7)=PageN'//Nombre d'éléments par page
TempB(8)=TotalRecord'//Nombre total d'articles
Fin du sous-marin
Sous-spectacle public (style)
Si IsErr=Vrai Alors
Réponse.Write ErrInfo
Quitter le sous-marin
Fin si
appel Init()
Sélectionnez le style de boîtier
Cas 1
Réponse.Write StyleA()
Cas 2
Réponse.Write StyleB()
Cas 3
Réponse.Write StyleC()
Cas 4
Réponse.Write StyleD()
Autre cas
ErrInfo=ErrInfo&"Le style actuel n'existe pas..."
Réponse.Write ErrInfo
Fin de la sélection
Fin du sous-marin
Fonction publique ShowStyle(Style)
Si IsErr=Vrai Alors
ShowStyle=ErrInfo
Fonction de sortie
Fin si
appel Init()
Sélectionnez le style de boîtier
Cas 1
ShowStyle=StyleA()
Cas 2
ShowStyle=StyleB()
Autre cas
ErrInfo=ErrInfo&"Le style actuel n'existe pas..."
ShowStyle=ErrInfo
Fin de la sélection
Fin de la fonction
Fonction privée StyleA()
'Page d'accueil Page précédente Page suivante Dernière page Cette page est la page 1/20, un total de 20 pages, 10 articles par page et un total de 200 articles.
'//Exemple de pagination : [Accueil] [Page précédente] [Page suivante] [Dernière page] [Page : 4/5 pages] [Total 86 articles/20 articles/page] Aller à : _ page
'//Tag : {N1} {N2} {N3} {N4} || Total : {N8} enregistrements {N6} la page contient actuellement {N5} page {N7} enregistrements par page
Si IsEmpty (TempStr) Alors
ErrInfo=ErrInfo&"Le modèle est vide..."
StyleB=ErrInfo
Fonction de sortie
Fin si
Faible
Si TotalPage>1 Alors
Si CurrPage>1 Alors
M="<a href=""&UrlStr&"Page=1'>"&"Accueil"&"</a>"
TempStr=Remplacer(TempStr,"{N1}",M)
M="<a href=""&UrlStr&"Page="&CurrPage-1&"'>"&"Page précédente"&"</a>"
TempStr=Remplacer(TempStr,"{N2}",M)
Si CurrPage<TotalPage Alors
M="<a href=""&UrlStr&"Page="&CurrPage+1&"'>"&"Page suivante"&"</a>"
TempStr=Remplacer(TempStr,"{N3}",M)
M="<a href=""&UrlStr&"Page="&TotalPage&"'>"&"Dernière page"&"</a>"
TempStr=Remplacer(TempStr,"{N4}",M)
Autre
TempStr=Remplacer(TempStr,"{N3}","Page suivante")
TempStr=Remplacer(TempStr,"{N4}","Dernière page")
Fin si
Autre
TempStr=Remplacer(TempStr,"{N1}","Page d'accueil")
TempStr=Remplacer(TempStr,"{N2}","Page précédente")
M="<a href=""&UrlStr&"Page="&CurrPage+1&"'>"&"Page suivante"&"</a>"
TempStr=Remplacer(TempStr,"{N3}",M)
M="<a href=""&UrlStr&"Page="&TotalPage&"'>"&"Dernière page"&"</a>"
TempStr=Remplacer(TempStr,"{N4}",M)
Fin si
Autre
TempStr=Remplacer(TempStr,"{N1}","Page d'accueil")
TempStr=Remplacer(TempStr,"{N2}","Page précédente")
TempStr=Remplacer(TempStr,"{N3}","Page suivante")
TempStr=Remplacer(TempStr,"{N4}","Dernière page")
Fin si
T = TempStr
T=Remplacer(T,"{N8}",EnregistrementTotal)
T=Remplacer(T,"{N6}",PageTotale)
T=Remplacer(T,"{N5}",CurrPage)
T=Remplacer(T,"{N7}",PageN)
TempStr=T
StyleA = TempStr
Fin de la fonction
Fonction privée StyleB()
'Page d'accueil|< 1 2 3 4 5 6 7 >| Dernière page
'//Balise :{N1} {N2} {L}{N}{L/}{N3}{N4}
Si IsEmpty (TempStr) Alors
ErrInfo=ErrInfo&"Le modèle est vide..."
StyleB=ErrInfo
Fonction de sortie
Fin si
Dim ForceNum,BackNum'//Le numéro affiché devant et derrière la page en cours
ForceNum=5
NuméroRetour=4
Faible
'//page d'accueil
M="<a href=""&UrlStr&"Page=1'>"&TempB(1)&"</a>"
TempStr=Remplacer(TempStr,"{N1}",M)
'//Dernière page
M="<a href=""&UrlStr&"Page="&TempB(6)&"'>"&TempB(4)&"</a>"
TempStr=Remplacer(TempStr,"{N4}",M)
'//Page précédente
M="|<"
Si CurrPage-1>=1 Alors
M="<a href=""&UrlStr&"Page="&CurrPage-1&"'>"&"|<"&"</a>"
Fin si
TempStr=Remplacer(TempStr,"{N2}",M)
'//Page suivante
M=">|"
Si CurrPage+1<=TotalPage Alors
M="<a href=""&UrlStr&"Page="&CurrPage+1&"'>"&">|"&"</a>"
Fin si
TempStr=Remplacer(TempStr,"{N3}",M)
'//Supprimer l'étiquette de la boucle
Dim. N1,N2,N3,N4,N5,N6
Si InStr(TempStr,"{L}")>0 Alors
N1=InStr(TempStr,"{L}")
Fin si
Si InStr(TempStr,"{L/}")>0 Alors
N2=InStr(TempStr,"{L/}")
Fin si
Si N2<=N1 Alors
ErrInfo=ErrInfo&"Erreur dans l'étiquette de boucle..."
StyleB=ErrInfo
Fonction de sortie
Fin si
N3=Mid(TempStr,N1,N2-N1+4)'//Modèles de stockage comprenant des balises de boucle {L}{L/}
N4=Replace(N3,"{L}","")'//Modèles de stockage qui n'incluent pas les balises de boucle {L}{L/}
N4=Remplacer(N4,"{L/}","")
'//Liste des numéros de pages
Faible FirstPageNum, LastPageNum
Si CurrPage-ForceNum<=1 Alors
NuméroPremièrePage=1
Liste des pages=""
Autre
FirstPageNum=CurrPage-ForceNum
Liste des pages="......"
Fin si
Si CurrPage+BackNum>=TotalPage Alors
NuméroDernièrePage=PageTotale
Liste de pages_2=""
Autre
LastPageNum=CurrPage+BackNum
PageList_2="......"
Fin si
Faible je
Pour I = FirstPageNum à LastPageNum
Si I=CurrPage Alors
N5=Remplacer(N4,"{N}","<b>"&I&"</b>")
N6 = N6 et N5
Autre
M="<a href=""&UrlStr&"Page="&I&"'>"&I&"</a>"
N5=Remplacer(N4,"{N}",M)
N6 = N6 et N5
Fin si
Suivant
TempStr=Remplacer(TempStr,N3,N6)
StyleB = TempStr
Fonction de fin
Fonction privée StyleC()
'Page d'accueil|< |<< 1 2 3 4 5 6 7 >>| Dernière page
'//Ce style est modifié en fonction du StyleB, en ajoutant deux balises : {N9} 10 pages précédentes {N10} 10 pages suivantes
'//Tag :{N1}{N2}{N9}{L}{N}{L/}{N10}{N3}{N4}
Dim T
T=StyleB()
'//Les dix premières pages
M="|<<"
Si CurrPage-10>=1 Alors
M="<a href=""&UrlStr&"Page="&CurrPage-10&"'>"&"|<<"&"</a>"
Fin si
T=Remplacer(T,"{N9}",M)
M=">>|"
Si CurrPage+10<=TotalPage Alors
M="<a href=""&UrlStr&"Page="&CurrPage+10&"'>"&">>|"&"</a>"
Fin si
T=Remplacer(T,"{N10}",M)
StyleC=T
Fonction de fin
Fonction privée StyleD()
'//Ce style est modifié en fonction du StyleC
'//Le total de {N8} enregistrements sur {N6} page est actuellement de {N5} page {N7} enregistrements par page
'//Page d'accueil|< |<< 1 2 3 4 5 6 7 >>| Dernière page
'//Tag :{N1}{N2}{N9}{L}{N}{L/}{N10}{N3}{N4}
Dim T
T=StyleC()
T=Remplacer(T,"{N8}",EnregistrementTotal)
T=Remplacer(T,"{N6}",PageTotale)
T=Remplacer(T,"{N5}",CurrPage)
T=Remplacer(T,"{N7}",PageN)
StyleD=T
Classe de fin de
fonction de fin
%>