(Originalvince6799)
La pagination dans le code asp est un peu gênante. J'ai personnellement écrit le code de pagination en deux fonctions pendant le processus d'écriture du code. Bien que la fonction ne soit pas parfaite, elle devrait être suffisante pour les applications générales.
<%
'La fonction de radiomessagerie est divisée en deux fonctions
'CalcPage(totalrec,msg_per_page,currentpage,n,rowcount,PageRs) fonction de calcul de pagination
fonction de
liste de pagination'fonction de calcul de pagination
'totalrec nombre total de jeux d'enregistrements
'msg_per_page Le nombre d'enregistrements affichés sur chaque page. Cette variable doit être attribuée à l'avance lors de l'appel de CalcPage.
'variable de la page actuelle de la page actuelle, vous devez attribuer une valeur à cette variable à l'avance lors de l'appel de CalcPage
'n nombre total de pages
'rowcount définit le nombre d'enregistrements de données par page
'Objet jeu d'enregistrements PageRs
sous CalcPage (totalrec, msg_per_page, currentpage, n, rowcount, PageRs)
n=0 'Mettez le numéro de page à 0 lorsqu'il n'y a aucun enregistrement
si page actuelle="" alors page actuelle=0
'PageRs.EOF et PageRs.bof aucun enregistrement
'Pas PageRs.EOF ou pas PageRs.BOF enregistré
si ce n'est pas PageRs.EOF ou pas PageRs.BOF alors
totalrec=PageRs.recordcount
PageRs.pagesize=msg_per_page
si totalrec mod msg_per_page = 0 alors 'Calculer le nombre total de pages, recordcount : le nombre total d'enregistrements de données
n = totalrecmsg_per_page 'n : Nombre total de pages
autre
n = totalrecmsg_per_page+1
finir si
sinon isnumeric(currentpage) ou currentpage="" alors currentpage=1
Si page actuelle <> "" alors
page actuelle = cint (page actuelle)
finir si
si page actuelle < 1 alors
page actuelle = 1
finir si
si currentpage*msg_per_page > totalrec et non ((currentpage-1)*msg_per_page < totalrec) alors
Page actuelle=1
finir si
PageRs.absolutepage = currentpage 'absolutepage : Placer le pointeur sur le début d'une page
rowcount = PageRs.pagesize 'pagesize : définit le nombre d'enregistrements de données pour chaque page
finir si
fin du sous
%>
<%
'Fonction de liste de pagination
'adresse de saut d'url
'requête ? Paramètres après ?
'Séparateur séparateur
'Type de pagination ListType
'Tapez :0 "Première page | Page précédente | Page suivante | Dernière page"
'Tapez : 1 "1 | 2 | 3 | 4 | ..........| Page suivante"
'Tapez : 2 "Première page | Dix premières pages | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | Dix pages suivantes | Dernière page"
'Style utilisé par les liens ListLink
sous PageList (ListType,url,querry,Separator,ListLink)
si Séparateur="" alors Séparateur="|"
si ListType="" alors ListType="0"
sélectionner le cas ListType
cas "0"
réponse.write""¤tpage&"/"&n&"page "
réponse.écrire "Total"&totalrec&" informations "
si page actuelle <= 1 alors
réponse.write"Première page "&Séparateur&" "
réponse.write"Page précédente "&Séparateur"" "
autre
réponse.write"<a href="""&url&"?page=1&"&querry&""" class="""&ListLink&""">Première page</a> "&Separator&" "
réponse.write"<a href="""&url&"?page="¤tpage-1&"&"&querry&""" class="""&ListLink&""">Page précédente</a> "&Separator&"  ; "
finir si
si page actuelle = n alors
réponse.write"Page suivante "&Séparateur"" "
réponse.write"Dernière page"
autre
réponse.write"<a href="""&url&"?page="¤tpage+1&"&"&querry&""" class="""&ListLink&""">Page suivante</a> "&Separator&"  ; "
réponse.write"<a href="""&url&"?page="&n&"&"&querry&""" class="""&ListLink&""">Dernière page</a> "
finir si
cas "1"
si page actuelle < n alors
réponse.write"<a href="""&url&"?page="¤tpage+1&"&"&querry&""" class="""&ListLink&""">Page suivante</a> "
autre
réponse.write"Page suivante"
finir si
pour i=1 à n
si cstr(i)=cstr(page actuelle) alors
réponse.write "<b>"&i&"</b>"&" "&Separator&" "
autre
réponse.write"<a href="""&url&"?page="&i&"&"&querry&""" class="""&ListLink&""">"&i&"</a> "&Separator&" "
finir si
suivant
cas "2"
PageMerCout=10 'Le nombre maximum de pages pouvant être tournées à chaque fois
'Obtenir le segment de numéro de page maximum de l'enregistrement
si n mod PageMerCout=0 alors
MaxPageFiled=nPageMerCout
autre
MaxPageFiled=nPageMerCout+1
finir si
'Déterminer le segment de numéro de page où se trouve la page actuelle
si la page actuelle mod PageMerCout =0 alors
CurrPageFiled=pageactuellePageMerCout
autre
CurrPageFiled=pageactuellePageMerCout+1
finir si
'Obtenir le numéro de page maximum et le numéro de page minimum du segment de numéro de page actuel
MaxPageNo=CurrPageFiled*PageMerCout
MinPageNo=(CurrPageFiled-1)*PageMerCout+1
'Sortie "première page | dix premières pages |"
si page actuelle <= 1 alors
réponse.write"Première page "&Séparateur&" "
autre
réponse.write"<a href="""&url&"?page=1&"&querry&""" class="""&ListLink&""">Première page</a> "&Separator&" "
finir si
si CurrPageFiled<=1 alors
réponse.write"Dix premières pages "&Séparateur"" "
autre
réponse.write"<a href="""&url&"?page="&MinPageNo-PageMerCout&"&"&querry&""" class="""&ListLink&""">Dix premières pages</a> "&Separator&"  ;"
finir si
'Sortie du segment de numéro de page actuel
pour i=MinPageNo à MaxPageNo
si je<=n alors
si cstr(i)=cstr(page actuelle) alors
réponse.write "<b>"&i&"</b>"&" "&Separator&" "
autre
réponse.write"<a href="""&url&"?page="&i&"&"&querry&""">"&i&"</a> "&Separator&" "
finir si
finir si
suivant
'Sortie "dix pages suivantes | dernière page"
si CurrPageFiled>=MaxPageFiled alors
réponse.write"Les dix pages suivantes "&Séparateur"" "
autre
réponse.write"<a href="""&url&"?page="&MaxPageNo+1&"&"&querry&""" class="""&ListLink&""">Les dix pages suivantes</a> "&Separator&" "
finir si
si page actuelle>=n alors
réponse.write"Dernière page"
autre
réponse.write"<a href="""&url&"?page="&n&"&"&querry&""" class="""&ListLink&""">Dernière page</a> "
finir si
fin de la sélection
fin du sous
%>