Beim Schreiben einer Paging-Klasse bin ich auf ein sehr cleveres Problem bei der Übergabe von Klassenobjektreferenzen gestoßen. Wenn ich erkläre, was hier vor sich geht, kann es für jeden schwierig sein, es klar zu verstehen. Es ist besser, sich den Code anzusehen, der Paging verwendet Klasse CPaging.
Kopieren Sie den Codecode wie folgt:
Klasse CPaging
Öffentliches RS-RecordSet-Objekt
Zeigerbezeichnung „Public Mark“.
Private sSize ' Anzahl der Anzeigen pro Seite
Private sTotal 'Gesamtzahl der Datensätze
Private sPage 'Aktuelle Seitennummer
Private sCount 'Gesamtseitenzahl
Private Sub Class_Initialize
sSize = 20
sPage = 1
sCount = 1
Sub beenden
Private Unterklasse_Terminate
Closeobj RS
Sub beenden
'Anzahl pro Seite anzeigen
Eigenschaft Let Size(Value)
sSize = Wert
End-Eigenschaft
Eigenschaft Größe abrufen
Größe=sGröße
End-Eigenschaft
'Aktuelle Seitenzahl
Eigenschaft Let Page(Value)
Wenn nicht, ist es numerisch (Wert), dann
sPage = 1
Anders
sPage = Wert
Ende wenn
End-Eigenschaft
Seite „Eigenschaft abrufen“.
Wenn (sPage - 1) * sSize > sTotal Dann
Wenn sTotal Mod sSize = 0, dann
Seite=Gesamt/sGröße
Anders
Seite = Gesamt / sSize +1
Ende wenn
ElseIf sPage < 1 Dann
Seite=1
Anders
Seite=sSeite
Ende wenn
End-Eigenschaft
'Gesamtseitenzahl
Anzahl der Eigenschaftsabrufe
Wenn sTotal Mod sSize = 0, dann
Anzahl = sTotal / sSize
Anders
Anzahl = sTotal / sSize + 1
Ende wenn
End-Eigenschaft
'Gesamtzahl der Datensätze
PropertyGetTotal()
Gesamt = sTotal
End-Eigenschaft
Öffentliche Funktion öffnen (Byval SQLString)
Versuchen Sie DB.Openquery(RS,SQLString)
sTotal = RS.RecordCount
Funktion beenden
Unterricht beenden
Das Folgende ist die aufrufende Seite
Kopieren Sie den Codecode wie folgt:
Dim-Produkte
Produkte festlegen = Neues CPaging
Mit Produkten
.Size = 15 'Anzahl der Anzeigen pro Seite
.Page = PageNum 'Aktuelle Seite
Ende mit
Versuchen Sie Products.Open(ListSQL)
Wenn Products.RS.Bof und Products.RS.Eof dann
Response.Write(<TR><TD colspan=8>Keinen Datensatz finden</TD></TR>)
Anders
Dim ich
ich = 0
Products.RS.Move (Products.Page - 1) * Products.Size
Do While Not Products.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)
Response.Write(</TR>&vbCrLf)
i=i+1
Wenn i >= Products.Size, dann Exit Do
Produkte.RS.MoveNext
Schleife
Ende wenn
Als ich Zeile 8 sah, schien ich einen Blick auf den Schatten von .net zu erhaschen – Namespace?