Ich werde zuerst den Quellcode der Paging-Klasse veröffentlichen und dann, wenn ich Zeit habe, einige Beispiele veröffentlichen, um ihre Verwendung und die Erweiterung ihrer Funktionen zu erläutern.
Der ursprüngliche Code der Klasse lautet wie folgt:
< %
'============================================
'XDOWNPAGE ASP-Version
'Aktuelle Version: 2.0
'
'
'Originalversion 1.00
'Code von zykj2000
„E-Mail: [email protected]
'BBS: http://bbs.513soft.net
'
'
'Upgrade-Version: 1.5 (ASP + Oracle)
um das Doppelte aktualisiert
E-Mail:
Blog: ttp://blog.csdn.net/double/
'Upgrade-Anweisungen:
'
'
'Upgrade-Version: 2.0' (ASP + Oracle) ---->Aktuelle Version
'Behalten Sie den ursprünglichen Namen bei: XDOWNPAGE
Aktualisiert von Northsnow
„E-Mail: [email protected]
'Blog: http://blog.csdn.net/precipitant
'Upgrade-Anweisungen:
'1: Beim Abfragen von Daten werden nur die auf der aktuellen Seite enthaltenen Datensätze abgefragt, wodurch die Menge der Datenübertragung erheblich reduziert wird.
'2, wenn die Seitennavigation normal ist, müssen Sie nicht jedes Mal die Gesamtzahl der Datensätze abfragen, solange Sie sie zum ersten Mal abfragen und sie dann über Parameter übergeben.
'3, unterstützt die dynamische Änderung der Seitengröße
'4, unterstützt dynamische Sortierung
'5, dieses Programm unterstützt nur Oracle. Wenn Sie es in SQL Server oder anderen Datenbanktypen verwenden möchten, ändern Sie es bitte selbst: Öffentliche Eigenschaft Let GetSQL(str_sql).
'
'
'Weitere Informationen zu Programmmodifikatoren finden Sie im Quellcode! ! !
„Dieses Programm kann kostenlos verwendet, geändert, kopiert, reproduziert und zitiert werden. Ich hoffe, dass mein Programm Ihre Arbeit erleichtern kann.“
„Aber bitte bewahren Sie die oben genannten Informationen auf, insbesondere die Originalinformationen.“ Wenn es außerdem für kommerzielle Zwecke verwendet wird, aktualisieren Sie bitte mit dem Originalwerk und dieser Version.
„Kontakt für Erlaubnis.“
'
'
'Programmfunktionen
„Dieses Programm kapselt hauptsächlich den Daten-Paging-Teil und der Datenanzeigeteil wird vollständig vom Benutzer angepasst.“
'Unterstützt mehrere URL-Parameter
'
'Gebrauchsanweisung
'Programmparameterbeschreibung
'PapgeSize definiert die Anzahl der Datensätze auf jeder Paging-Seite
'GetRS gibt das paginierte Recordset zurück. Diese Eigenschaft ist schreibgeschützt.
'GetConn ruft die Datenbankverbindung ab
'GetSQL ruft die Abfrageanweisung ab
'totalRecordCount übergibt die Gesamtzahl der Datensätze
' Programmmethodenbeschreibung
„ShowPage zeigt die Paging-Navigationsleiste an, die einzige öffentliche Methode.“
'ShowPageSizeChange() zeigt eine Liste der geänderten Seitengrößen an
'
'Beispiel:
'
' 'Dateien einschließen
'
'Setze mypage=new xdownpage 'Objekt erstellen
'mypage.getconn=conn 'Datenbankverbindung abrufen
' mypage.getsql="select * from productinfo order by id asc"
' mypage.pagesize=5 'Setzen Sie die Datensatzdaten jeder Seite auf 5
'mypage.totalRecordCount=rsTotalCount legt die Gesamtzahl der Datensätze fest
'set rs=mypage.getrs() 'Recordset zurückgeben
'mypage.GetSubmitForm="frmQuery" 'Das standardmäßig für Paging übermittelte Formular, Parameter currentpage
'Response.write(mypage.GetSubmitForm1()) 'Paging-Übermittlungsfunktion ausgeben
' mypage.showpage() 'Paging-Informationen anzeigen. Diese Methode kann nach set rs=mypage.getrs() verwendet werden.
„Ruf überall an, kann mehrmals angerufen werden.“
' do while not rs.eof 'Der nächste Vorgang ist derselbe wie der Betrieb eines gewöhnlichen Recordset-Objekts.
' Response.write rs(0) & "
' " 'Hier können Sie die Anzeigemethode anpassen
'rs. movenext
' Schleife
'
'Übermittlungsskript hinzugefügt, um die aktuelle Seitenzahl zu speichern
'Die Funktion ist GetSubmitForm()
„Es muss ein Formularname an die Funktion GetSubmitForm übermittelt werden.“
'Speichern Sie die vier Parameter der Variablen flag, currentpage, pagesize, rsTotalCount in diesem übermittelten Formular
'Beispiel ist wie folgt
'flag=request("flag")
'currentpage=request("currentpage")
'currentpage=request("pagesize")
'currentpage=request("rsTotalCount")
'Fügen Sie dem übermittelten Formular die folgenden vier Eingaben hinzu
'<input name="flag" type="hidden" value="< % =flag% >">
'<input name="currentpage" type="hidden" value="< % =currentpage% >">
'<input name="pagesize" type="hidden" value="< % =pagesize% >">
'<input name="rsTotalCount" type="hidden" value="< % =rsTotalCount% >">
'============================================
Const Btn_First= "<font face=""webdings"">9</font>" 'Definieren Sie den Anzeigestil der Schaltfläche auf der ersten Seite
Const Btn_Prev="<font face=""webdings"">3</font>" 'Definieren Sie den Anzeigestil der Schaltfläche für die vorherige Seite
Const Btn_Next="<font face=""webdings"">4</font>" 'Definieren Sie den Anzeigestil der Schaltfläche für die nächste Seite
Const Btn_Last="<font face=""webdings"">:</font>" 'Definieren Sie den Anzeigestil der Schaltfläche für die letzte Seite
Const XD_Align="center" 'Definieren Sie die Ausrichtung der Paging-Informationen
Const XD_Width="100%" 'Definieren Sie die Größe des Paging-Informationsfelds
Const XD_Height="20"
Variablendefinition
„Klasse beginnt hier
“.
public int_totalPage 'Gesamtzahl der Seiten
public int_curcount 'Anzahl der Datensätze auf der aktuellen Seite
public XD_PageSize 'Seitengröße
Private int_curpage 'Aktuelle Seitennummer
Private int_totalRecord 'Gesamtzahl der Datensätze
Private XD_Conn 'Datenbankverbindungsobjekt
Privates XD_Rs 'Datensatzobjekt
Private XD_SQL-Haupt-SQL-Anweisung
Private XD_Count_SQL 'SQL-Anweisung zur Abfrage der Gesamtzahl der Datensätze
Private Str_errors
Private str_URL
Private XD_sURL
Private SubmitForm 'Erforderlicher Name des Abfrageformulars (Formularname ausblenden)
'============================================== = ================
'PageSize-Eigenschaft
'Stellen Sie die Seitengröße jeder Seite ein
'============================================== = ================
Öffentliche Eigenschaft Let PageSize(int_PageSize)
Wenn IsNumeric(Int_Pagesize) Dann
wenn clng(Int_Pagesize)>0 dann
XD_PageSize=CLng(int_PageSize)
anders
XD_PageSize=10
Ende wenn
Anders
XD_PageSize=10
Ende wenn
End-Eigenschaft
Öffentliche Eigenschaft PageSize abrufen
Wenn XD_PageSize="" oder (not(IsNumeric(XD_PageSize))) Dann
Seitengröße=10
Anders
PageSize=XD_PageSize
Ende wenn
End-Eigenschaft
'============================================== = ================
'GetRS-Eigenschaft
'Gibt das paginierte Recordset zurück
'============================================== = ================
Öffentliches Eigentum Get GetRs()
Setze XD_Rs=Server.createobject("adodb.recordset")
'XD_Rs.PageSize=Seitengröße
XD_Rs.CursorLocation=3
XD_Rs.Open XD_SQL,XD_Conn,3,1
int_curcount=XD_Rs.RecordCount
if int_totalRecord="" or not isNumeric(int_totalRecord) then int_totalRecord=0 'Normalisieren Sie den Wert von int_totalRecord
Wenn int_totalRecord=0 und (int_curcount>=PageSize oder int_curpage>1), dann rufen Sie queryRsCount() auf. 'Fragen Sie die Gesamtzahl der Datensätze ab
wenn err.number<>0 dann
Antwort.Schreibfehler.Klar
Ende wenn
Setzen Sie GetRs=XD_RS
End-Eigenschaft
'============================================= =================
'queryRSCount-Methode
'Fragen Sie die Gesamtzahl der Datensätze ab
'============================================== = ================
Öffentliche UnterabfrageRsCount()
'Der folgende Code wird verwendet, um die Gesamtzahl der Datensätze zu berechnen
if XD_Count_SQL<>"" then
set rs_sqlcount=server.createobject("adodb.recordset")
rs_sqlcount.CursorLocation=3
rs_sqlcount.open XD_Count_SQL,conn,3,1
if (rs_sqlcount.eof und rs_sqlcount.bof) dann
int_totalRecord=0
anders
int_totalRecord=rs_sqlcount(0)
int_totalRecord=clng(int_totalRecord)
Ende wenn
rs_sqlcount.close
setze rs_sqlcount=nichts
Ende wenn
End sub
'============================================= = =================
'GetConn ruft die Datenbankverbindung ab
'
'============================================== = ===============
Öffentliche Eigenschaft Let GetConn(obj_Conn)
Setzen Sie XD_Conn=obj_Conn
End-Eigenschaft
'============================================= ================
'GetSQL ruft die Abfrageanweisung ab
'
'============================================== = ===============
Öffentliche Eigenschaft Let GetSQL(str_sql)
if (str_sql<>"") dann
'Generieren Sie basierend auf der angegebenen Abfrageanweisung die endgültige Abfrageanweisung (übernehmen Sie nur den Inhalt der aktuellen Seite): Geeignet für Oracle-Datenbank
XD_SQL=" select * from (select rownum r_n,temptable.* from ("
XD_SQL=XD_SQL&str_sql
XD_SQL=XD_SQL&" ) temptable ) wobei r_n zwischen " & cstr((int_curpage -1) * XD_PageSize +1) & " und " & cstr(int_curpage * XD_PageSize)
'Abfrageanweisung zur Abfrage der Gesamtzahl der Datensätze
XD_Count_SQL="select count(*) from ("& str_sql & ")"
Ende wenn
End-Eigenschaft
'============================================== = ===============
'GetSubmitForm-Eigenschaft legt das Formular für Abfragebedingungen fest
'
'============================================== = ===============
Öffentliche Eigenschaft Let GetSubmitForm(frmName)
SubmitForm=trim(frmName)
End-Eigenschaft
'============================================= ================
Die Methode „GetSubmitForm1“ gibt das für die Seitennavigation erforderliche Skript aus
'
'============================================== = ===============
öffentliches Sub GetSubmitForm1()
'Javascript-Funktion der Seitennavigation
Response.Write " "+vrcrlf
Response.Write ("<Script language=""javascript"">") +vbcrlf
Response.Write „ function generalSubmit(i)“+vbcrlf
Response.Write " {"+vbcrlf
Response.Write " document."&SubmitForm&".flag.value=""query1111111155555"";"+vbcrlf
Response.Write " document."&SubmitForm&".currentpage.value=i;"+vbcrlf
Response.Write " "&SubmitForm&".submit();"+vbcrlf
Response.Write „ }“+vbcrlf
'Javascript-Funktion zum Ändern der Seitengröße
Response.Write „ function changePageSize(ii)“+vbcrlf
Response.Write " {"+vbcrlf
Response.Write " document."&SubmitForm&".flag.value=""query1111111155555"";"+vbcrlf
Response.Write " document."&SubmitForm&".currentpage.value=1;"+vbcrlf
Response.Write " document."&SubmitForm&".pagesize.value=ii;"+vbcrlf
Response.Write " "&SubmitForm&".submit();"+vbcrlf
Response.Write " }"+vbcrlf
Response.Write ("</Script>")+vbcrlf
Response.Write " "+vrcrlf
end sub
'============================================= = ===================
'totalRecordCount-Eigenschaft
„Über die Gesamtzahl der Datensätze.“
'
'============================================== = =================
Öffentliche Eigenschaft Let totalRecordCount(int_totalRecordCount)
If IsNumeric(int_totalRecordCount) Then
int_totalRecord=CLng(int_totalRecordCount)
Ende wenn
End-Eigenschaft
Öffentliche Eigenschaft TotalRecordCount abrufen
Wenn nicht(int_totalRecord="" oder (not(IsNumeric(int_totalRecord)))) Dann
totalRecordCount=int_totalRecord
Ende wenn
End-Eigenschaft
'============================================== = =================
'GetRecordCount-Methode
'Gibt die aktuelle Anzahl der Datensätze zurück
'
'============================================== = =================
öffentliche Funktion GetRecordCount()
GetRecordCount=int_totalRecord
Endfunktion
'============================================== = =================
'Class_Initialize Klasseninitialisierung
'Initialisiere den Wert der aktuellen Seite
'
'============================================== = =================
Private Sub Class_Initialize
'========================
'Legen Sie für einige Parameter Standardwerte fest
'========================
' XD_PageSize=10 'Setzen Sie den Standardwert für Paging auf 10
'========================
'Holen Sie sich den aktuellen Wert
'========================
Wenn Request("currentpage")="" Dann
int_curpage=1
ElseIf not(IsNumeric(Request("currentpage"))) Then
int_curpage=1
ElseIf CInt(Trim(Request("currentpage")))<1 Then
int_curpage=1
Anders
Int_curpage=CInt(Trim(Request("currentpage")))
End If
End Sub
'=========================================== =
'ShowPage erstellt eine Seitennavigationsleiste
„Es gibt Startseite, vorherige Seite, nächste Seite, letzte Seite und digitale Navigation.“
'
'============================================
Öffentliche Sub-ShowPage()
Dimmen Sie str_tmp
XD_sURL = GetUrl()
' int_totalRecord=XD_Rs.RecordCount
Wenn int_totalRecord<=0 Dann
str_error=str_error & „Die Gesamtzahl der Datensätze ist Null, bitte geben Sie Daten ein“
Rufen Sie ShowError() auf
Ende wenn
Wenn int_totalRecord="" dann
int_TotalPage=1
Else
'modify by wls 041215 Für die richtige Seitenanzeige--------------
Wenn int_totalRecord mod PageSize =0 Dann
int_TotalPage = CLng(int_TotalRecord XD_PageSize * -1) *-1
Anders
int_TotalPage = CLng(int_TotalRecord XD_PageSize * -1)*-1+1
End If
End If
If Int_curpage>int_Totalpage Then
int_curpage=int_TotalPage
End If
'============================================= ========
„Zeigen Sie Seiteninformationen an. Jedes Modul ändert die Anzeigeposition entsprechend seinen eigenen Anforderungen.“
'============================================== = =======
'response.write " "
str_tmp=ShowFirstPrv
Antwort.write str_tmp
str_tmp=showNumBtn
Antwort.write str_tmp
str_tmp=ShowNextLast
Antwort.write str_tmp
str_tmp=Seiteninfo anzeigen
Antwort.write str_tmp
Response.write „ “
ShowGoto
End Sub
'============================================
'ShowFirstPrv zeigt die Startseite und die vorherige Seite an
'
'
'============================================
Private Funktion ShowFirstPrv()
Dimmen Sie Str_tmp,int_prvpage,
wenn int_curpage=1, dann
str_tmp=Btn_First&" "&Btn_Prev
Elseif dann int_curpage=0
str_tmp=Btn_First&" "&Btn_Prev
anders
int_prvpage=int_curpage-1
str_tmp="<a href=""#"" onclick=""javascript:generalSubmit('1')"" alt=""First Page"">" & Btn_First&"</a> <a href="" # "" onclick=""javascript:generalSubmit('"&int_prvpage&"')"" alt=""Vorherige Seite"">" & Btn_Prev&"</a>"
Ende wenn
ShowFirstPrv=str_tmp
Endfunktion
'============================================
'ShowNextLast nächste Seite, letzte Seite
'
'
'============================================
Private Funktion ShowNextLast()
Dim str_tmp,int_Nextpage
If Int_curpage>=int_totalpage Then
str_tmp=Btn_Next & " " & Btn_Last
Anders
Int_NextPage=int_curpage+1
str_tmp="<a href=""#"" onclick=""javascript:generalSubmit('"&int_nextpage&"')"" alt=""Nextpage"">" & Btn_Next&"</a> <a href= "" #"" onclick=""javascript:generalSubmit('"&int_totalpage&"')"" alt=""Last Page"">" & Btn_Last&"</a>"
Ende wenn
ShowNextLast=str_tmp
Endfunktion
'Endfunktion
'============================================
'ShowNumBtn hat die numerische Navigation geändert
'
'============================================
Funktion showNumBtn()
Dim i,str_tmp,end_page,start_page
start_page=1
'hinzufügen von sll 2005.05.20 int_curpage=0
wenn int_curpage=0 dann
str_tmp=str_tmp&"0"
anders
wenn int_curpage>1 dann
start_page=int_curpage
if (int_curpage<=5) then
start_page=1
Ende wenn
if (int_curpage>5) then
start_page=int_curpage-2
Ende wenn
Ende wenn
end_page=start_page+5
wenn end_page>int_totalpage dann
end_page=int_totalpage
Ende wenn
Für i=start_page bis end_page
strTemp=XD_sURL & CStr(i)
str_tmp=str_tmp & "[<a href=""#"" onclick=""javascript:generalSubmit('"&i&"')"">"&i&"</a>] "
Nächste
Ende wenn
showNumBtn=str_tmp
Endfunktion
'============================================
'ShowGoto-Seitensprung
„Die Seite springt automatisch.“
'hinzufügen von sll 2005.05.20
'============================================
Private Funktion ShowGoto()
'response.write int_totalPage
diminti
if int_totalPage<=0 then
Response.write „<select name='goto' invalid>“
Response.Write „<option value='0'>0</option>“
Response.write „</select>“
else
Response.write "<select name='goto' onchange='javascript:generalSubmit(this.value)'>"
for inti=1 to int_totalPage
Response.Write "<option value='"&inti&"'"
wenn cstr(inti)=cstr(int_curpage) dann
Response.write „ausgewählt“
Ende wenn
Response.write" >"&inti&"</option>"
nächste
Response.write „</select>“
Ende wenn
Funktion beenden
'============================================
'ShowPageInfo-Paging-Informationen
'Ändern Sie es nach Bedarf
'
'============================================
Private Funktion ShowPageInfo()
Dimmen Sie str_tmp
str_tmp=" [Seite:<font color=red>"&int_curpage&"</font>/"&int_totalpage&"] [Gesamtzahl der „&int_totalrecord&“-Elemente] [„&XD_PageSize&“-Elemente/Seite]“
ShowPageInfo=str_tmp
Funktion beenden
'============================================
'ShowPageSizeChange ändert die Seitengröße
'Ändern Sie es nach Bedarf
'
'============================================
öffentliches Sub ShowPageSizeChange()
Dimmen Sie str_tmp
str_tmp="Seitengröße: <select name='sssssPageSize' onchange='changePageSize(this.value)'>"
str_tmp=str_tmp & "<option"
wenn XD_PageSize=10 dann str_tmp =str_tmp & " selected "
str_tmp=str_tmp & " value='10'>10</option>"
str_tmp=str_tmp & "<option"
wenn XD_PageSize=20 dann str_tmp =str_tmp & " selected "
str_tmp=str_tmp & " value='20'>20</option>"
str_tmp=str_tmp & "<option"
wenn XD_PageSize=50 dann str_tmp =str_tmp & " selected "
str_tmp=str_tmp & " value='50'>50</option>"
str_tmp=str_tmp & "<option"
wenn XD_PageSize=int_totalRecord dann str_tmp =str_tmp & " selected "
str_tmp=str_tmp & " value='" & int_totalRecord & "'>all</option>"
str_tmp=str_tmp & "</select>"
Antwort. Schreiben Sie str_tmp
End sub
'============================================
'Geänderte Funktion zum Abrufen der aktuellen URL-Parameter
„Codierung von Redsun
'Northsnow-Kommentar: Ich weiß nicht, wo ich es verwenden soll, aber behalte es
'============================================
Private Funktion GetUrl()
Dimmen Sie ScriptAddress, M_ItemUrl, M_item
ScriptAddress = CStr(Request.ServerVariables("SCRIPT_NAME"))&"?" 'Die aktuelle Adresse abrufen
Wenn (Request.QueryString <> "") Dann
M_ItemUrl = ""
Für jedes M_item in Request.QueryString
Wenn InStr("page",M_Item)=0 Dann
M_ItemUrl = M_ItemUrl & M_Item &"="& Server.URLEncode(Request.QueryString(""&M_Item&"")) & "&"
Ende wenn
Nächste
ScriptAddress = ScriptAddress & M_ItemUrl 'Adresse mit Parametern abrufen
Ende wenn
GetUrl = ScriptAddress '& "page="
Funktion beenden
'============================================
'Legen Sie das Terminate-Ereignis fest.
'============================================
Private Unterklasse_Terminate
'XD_RS.close
'Setze XD_RS=nichts
Sub beenden
'============================================
'ShowError-Fehlermeldung
'============================================
Private Sub ShowError()
Wenn str_Error <> "" Dann
Response.Write("" & SW_Error & "")
Antwort.Ende
Ende wenn
End-Sub-
End-Klasse
%>