Lors de l'écriture d'une classe de pagination, j'ai rencontré un problème très intelligent de transmission des références d'objets de classe. Si j'explique ce qui se passe ici, il peut être difficile pour tout le monde de comprendre clairement. Il est préférable de regarder le code qui utilise une pagination. classe CPaging.
Copiez le code comme suit :
Classe CPaging
Objet RecordSet public de RS
Étiquette de pointeur de marque publique
Private sSize ' Nombre d'affichages par page
Private sTotal 'Nombre total d'enregistrements
Private sPage 'Numéro de la page actuelle
Compte privé 'Nombre total de pages
Sous-classe privée_Initialize
sTaille = 20
sPage = 1
sCompte = 1
Fin du sous-marin
Sous-classe privée_Terminate
Fermerobj RS
Fin du sous-marin
'Afficher le numéro par page
Propriété Let Size (Valeur)
sTaille = Valeur
Propriété de fin
Propriété Obtenir la taille
Taille=sTaille
Propriété de fin
'Numéro de la page actuelle
Page de location de propriété (valeur)
Si ce n'est pas IsNumeric (Valeur) Alors
sPage = 1
Autre
sPage = Valeur
Fin si
Propriété de fin
Page d'obtention de propriété
Si (sPage - 1) * sTaille > sTotal Alors
Si sTotal Mod sSize = 0 Alors
Page=Total/sTaille
Autre
Page = Total / sTaille +1
Fin si
SinonSi sPage < 1 Alors
Page=1
Autre
Page=sPage
Fin si
Propriété de fin
'Nombre total de pages
Propriété Obtenir le nombre
Si sTotal Mod sSize = 0 Alors
Nombre = sTotal / sTaille
Autre
Nombre = sTotal / sTaille + 1
Fin si
Propriété de fin
'Nombre total d'enregistrements
PropriétéGetTotal()
Total = sTotal
Propriété de fin
Fonction publique ouverte (Byval SQLString)
Essayez DB.Openquery(RS,SQLString)
sTotal = RS.RecordCount
Fonction de fin
Fin du cours
Ce qui suit est la page d'appel
Copiez le code comme suit :
Produits Dim
Définir les produits = Nouvelle CPaging
Avec des produits
.Size = 15' Nombre d'affichages par page
.Page = PageNum 'Page actuelle
Terminer par
Essayez Products.Open (ListSQL)
Si Products.RS.Bof et Products.RS.Eof alors
Response.Write(<TR><TD colspan=8>Trouver aucun enregistrement</TD></TR>)
Autre
Faible je
je = 0
Produits.RS.Move (Produits.Page - 1) * Produits.Taille
Faire sans produits.RS.Eof
Response.Write(<TR onmouseup=MouseUp(this); onmousedown=MouseDown(this); onmouseover=MouseOver(this); onclick=Click(this); onmouseout=MouseOut(this);>&vbCrLf)
Response.Write(<TD align=middle nowrap> & Products.RS(ProductsClassName) & </TD>&vbCrLf)
Response.Write(<TD align=left nowrap> & Products.RS(ProductsName) & </TD>&vbCrLf)
Réponse.Write(</TR>&vbCrLf)
je=i+1
Si je >= Products.Size Alors quittez Do
Produits.RS.MoveNext
Boucle
Fin si
Quand j'ai vu la ligne 8, j'ai semblé apercevoir l'ombre de .net - espace de noms ?