Saya akan memposting kode sumber kelas paging terlebih dahulu, lalu saya akan memposting beberapa contoh untuk menjelaskan penggunaannya dan cara memperluas fungsinya ketika saya punya waktu.
Kode asli kelasnya adalah sebagai berikut:
< %
'=================
'XDOWNPAGE versi ASP
'Versi saat ini: 2.0
'
'
'Versi asli 1.00
'Kode oleh zykj2000
'Email: [email protected]
'BBS: http://bbs.513soft.net
'
'
'Versi peningkatan: 1.5 (asp + Oracle)
diperbarui dua kali lipat
E-mail:
blog: ttp://blog.csdn.net/double/
'Instruksi peningkatan:
'
'
'Versi peningkatan: 2.0' (asp + Oracle) ---->Versi saat ini
'Simpan nama aslinya: XDOWNPAGE
Diperbarui oleh salju utara
'email: [email protected]
'blog: http://blog.csdn.net/precipitant
'Instruksi peningkatan:
'1, saat menanyakan data, hanya catatan yang terdapat di halaman saat ini yang ditanyakan, yang sangat mengurangi jumlah transmisi data.
'2, jika navigasi halaman normal, Anda tidak perlu menanyakan jumlah total record setiap saat, selama Anda menanyakannya untuk pertama kali dan kemudian meneruskannya melalui parameter.
'3, mendukung perubahan ukuran halaman secara dinamis
'4, mendukung penyortiran dinamis
'5, program ini hanya mendukung oracle, jika ingin menggunakannya di sqlserver atau database jenis lain, silakan modifikasi sendiri: Properti Publik Biarkan GetSQL(str_sql).
'
'
'Untuk informasi pengubah program lainnya, silakan periksa di kode sumber! ! !
'Program ini dapat digunakan, dimodifikasi, disalin, direproduksi, dan dikutip secara gratis.
'Tapi tolong simpan informasi di atas, terutama informasi asli. Selain itu, jika digunakan untuk tujuan komersial, harap tingkatkan dengan karya asli dan versi ini.
'Hubungi untuk izin.
'
'
'Fitur program
'Program ini terutama merangkum bagian halaman data, dan bagian tampilan data sepenuhnya disesuaikan oleh pengguna.
'Mendukung beberapa parameter URL
'
'Petunjuk Penggunaan
'Deskripsi parameter program
'PapgeSize menentukan jumlah catatan pada setiap halaman paging
'GetRS mengembalikan Recordset yang diberi nomor halaman. Properti ini hanya dapat dibaca.
'GetConn mendapatkan koneksi database
'GetSQL mendapatkan pernyataan kueri
'totalRecordCount melewati jumlah total catatan
' deskripsi metode program
'ShowPage menampilkan bilah navigasi halaman, satu-satunya metode publik
'ShowPageSizeChange() menampilkan daftar ukuran halaman yang diubah
'
'contoh:
'
''Sertakan file
'
'Atur mypage=new xdownpage 'Buat objek
'mypage.getconn=conn 'Dapatkan koneksi database
' mypage.getsql="pilih * dari productinfo pesanan berdasarkan id asc"
' mypage.pagesize=5 'Atur data catatan setiap halaman menjadi 5
'mypage.totalRecordCount=rsTotalCount menetapkan jumlah total catatan
'set rs=mypage.getrs() 'Kembalikan Kumpulan Catatan
'mypage.GetSubmitForm="frmQuery" 'Formulir dikirimkan secara default untuk paging, parameter halaman saat ini
'Response.write(mypage.GetSubmitForm1()) 'Fungsi pengiriman paging keluaran
' mypage.showpage() 'Menampilkan informasi paging. Metode ini dapat digunakan setelah set rs=mypage.getrs()
'Telepon kemana saja, bisa ditelepon berkali-kali
' do while not rs.eof 'Operasi selanjutnya sama dengan mengoperasikan objek Recordset biasa.
' respon.tulis rs(0) & "
' " 'Di sini Anda dapat menyesuaikan metode tampilan
'rs.bergerakselanjutnya
' lingkaran
'
'Menambahkan skrip pengiriman untuk menyimpan nomor halaman saat ini
'Fungsinya adalah GetSubmitForm()
'Perlu mengirimkan nama formulir ke fungsi GetSubmitForm
'Simpan empat parameter flag variabel, halaman saat ini, ukuran halaman, rsTotalCount dalam formulir yang dikirimkan ini
'Contohnya adalah sebagai berikut
'bendera=permintaan("bendera")
'halaman saat ini=permintaan("halaman saat ini")
'halaman saat ini=permintaan("ukuran halaman")
'halaman saat ini=permintaan("rsTotalCount")
'Tambahkan empat masukan berikut ke formulir yang dikirimkan
'<masukan nama="bendera" type="tersembunyi" nilai="< % =bendera% >">
'<input nama="halaman saat ini" type="hidden" value="< % =halaman saat ini% >">
'<masukan nama="ukuran halaman" type="tersembunyi" nilai="< % =ukuran halaman% >">
'<input name="rsTotalCount" type="hidden" value="< % =rsTotalCount% >">
'================
Konst Btn_Pertama= "<font face=""webdings"">9</font>" 'Tentukan gaya tampilan tombol di halaman pertama
Const Btn_Prev="<font face=""webdings"">3</font>" 'Tentukan gaya tampilan tombol halaman sebelumnya
Const Btn_Next="<font face=""webdings"">4</font>" 'Tentukan gaya tampilan tombol halaman berikutnya
Const Btn_Last="<font face=""webdings"">:</font>" 'Tentukan gaya tampilan tombol halaman terakhir
Const XD_Align="center" 'Tentukan penyelarasan informasi paging
Const XD_Width="100%" 'Tentukan ukuran kotak informasi paging
Konstanta XD_Tinggi = "20"
Definisi variabel
Kelas Xdownpage 'Kelas dimulai di sini
'
public int_totalPage 'Jumlah total halaman
public int_curcount 'Jumlah catatan pada halaman saat ini
publik XD_PageSize 'Ukuran halaman
Private int_curpage 'Nomor halaman saat ini
Private int_totalRecord 'Jumlah total catatan
Swasta XD_Conn 'Objek koneksi database
Objek kumpulan rekaman XD_Rs pribadi
Pernyataan sql utama XD_SQL pribadi
Pernyataan SQL pribadi XD_Count_SQL 'untuk menanyakan jumlah total catatan
Str_errors pribadi
str_URL pribadi
XD_sURL pribadi
Private SubmitForm 'Nama formulir kueri yang diperlukan (sembunyikan nama formulir)
' ===== = ================
'Properti Ukuran Halaman
'Atur ukuran halaman setiap halaman
' ===== = ================
Properti Publik Biarkan PageSize(int_PageSize)
Jika IsNumeric(Int_Pagessize) Lalu
jika clng(Int_Pagessize)>0 maka
XD_PageSize=CLng(int_PageSize)
kalau tidak
XD_Ukuran Halaman=10
berakhir jika
Kalau tidak
XD_Ukuran Halaman=10
Akhiri Jika
Properti Akhir
Properti Publik Dapatkan Ukuran Halaman
Jika XD_PageSize="" atau (bukan(IsNumeric(XD_PageSize))) Lalu
Ukuran Halaman=10
Kalau tidak
Ukuran Halaman=XD_Ukuran Halaman
Akhiri Jika
Properti Akhir
' ===== = ================
'Properti GetRS
'Kembalikan kumpulan data yang diberi nomor halaman
' ===== = ================
Properti Publik Dapatkan GetRs()
Setel XD_Rs=Server.createobject("adodb.recordset")
'XD_Rs.PageSize=Ukuran Halaman
XD_Rs.Lokasi Kursor=3
XD_Rs.Buka XD_SQL,XD_Conn,3,1
int_curcount=XD_Rs.RecordCount
jika int_totalRecord="" atau bukan isNumeric(int_totalRecord) maka int_totalRecord=0 'Normalisasikan nilai int_totalRecord
jika int_totalRecord=0 dan (int_curcount>=PageSize atau int_curpage>1) lalu panggil queryRsCount() 'Kueri jumlah total catatan
jika err.number<>0 maka
Respon. Tulis err. Hapus
berakhir jika
Tetapkan GetRs=XD_RS
Properti Akhir
'================ = ==
'metode queryRSCount
'Kueri jumlah total catatan
' ===== = ================
Sub kueriRsCount() publik
'Kode berikut digunakan untuk menghitung jumlah total catatan
jika XD_Count_SQL<>"" maka
setel rs_sqlcount=server.createobject("adodb.recordset")
rs_sqlcount.CursorLocation=3
rs_sqlcount.buka XD_Count_SQL,sambungan,3,1
jika (rs_sqlcount.eof dan rs_sqlcount.bof) lalu
int_totalRecord=0
kalau tidak
int_totalRecord=rs_sqlcount(0)
int_totalRecord=clng(int_totalRecord)
berakhir jika
rs_sqlcount.close
atur rs_sqlcount=tidak ada
berakhir jika
Sub akhir
'================= = ==
'GetConn mendapatkan koneksi database
'
' ===== = ===============
Properti Publik Biarkan GetConn(obj_Conn)
Tetapkan XD_Conn=obj_Conn
Properti Akhir
'================ = ================
'GetSQL mendapatkan pernyataan kueri
'
' ===== ================
Properti Publik Biarkan GetSQL(str_sql)
jika (str_sql<>"") maka
'Berdasarkan pernyataan kueri yang diberikan, buat pernyataan kueri akhir (hanya ambil konten halaman saat ini): cocok untuk database Oracle
XD_SQL=" pilih * dari (pilih nomor baris r_n,bisa dicoba.* dari ("
XD_SQL=XD_SQL&str_sql
XD_SQL=XD_SQL&" ) dapat dicoba ) di mana r_n antara " & cstr((int_curpage -1) * XD_PageSize +1) & " dan " & cstr(int_curpage * XD_PageSize)
'Pernyataan kueri untuk menanyakan jumlah total catatan
XD_Count_SQL="pilih hitungan(*) dari ("& str_sql & ")"
berakhir jika
Properti Akhir
' ===== = ===============
'Properti GetSubmitForm menyetel formulir untuk kondisi kueri
'
' ===== = ===============
Properti Publik Biarkan GetSubmitForm(frmName)
Formulir Kirim=trim(Namafrm)
Properti Akhir
'================ = ================
'Metode GetSubmitForm1 mengeluarkan skrip yang diperlukan untuk navigasi paging
'
' ===== = ===============
sub publik GetSubmitForm1()
'Fungsi Javascript untuk navigasi halaman
Respon.Tulis " "+vrcrlf
Respon.Tulis ("<Bahasa skrip=""javascript"">") +vbcrlf
Respon.Tulis " fungsi generalSubmit(i)"+vbcrlf
Respon.Tulis " {"+vbcrlf
Respon.Tulis " dokumen."&SubmitForm&".flag.value=""query1111111155555"";"+vbcrlf
Respon.Tulis " dokumen."&SubmitForm&".currentpage.value=i;"+vbcrlf
Respon.Tulis " "&SubmitForm&".submit();"+vbcrlf
Respon.Tulis " }"+vbcrlf
'javascript berfungsi untuk mengubah ukuran halaman
Respon.Tulis " fungsi changePageSize(ii)"+vbcrlf
Respon.Tulis " {"+vbcrlf
Respon.Tulis " dokumen."&SubmitForm&".flag.value=""query1111111155555"";"+vbcrlf
Respon.Tulis " dokumen."&SubmitForm&".currentpage.value=1;"+vbcrlf
Respon.Tulis " dokumen."&SubmitForm&".pagesize.value=ii;"+vbcrlf
Respon.Tulis " "&SubmitForm&".submit();"+vbcrlf
Respon.Tulis " }"+vbcrlf
Respon.Tulis ("</Script>")+vbcrlf
Respon.Tulis " "+vrcrlf
sub akhir
'================= = ====
'properti totalRecordCount
'Tentang jumlah total catatan
'
' ===== = ==
Properti Publik Biarkan totalRecordCount(int_totalRecordCount)
Jika IsNumeric(int_totalRecordCount) Lalu
int_totalRecord=CLng(int_totalRecordCount)
Akhiri Jika
Properti Akhir
Properti Publik Dapatkan totalRecordCount
Jika tidak(int_totalRecord="" atau (tidak(IsNumeric(int_totalRecord)))) Maka
totalRecordCount=int_totalRecord
Akhiri Jika
Properti Akhir
' ===== = ==
'Metode GetRecordCount
'Kembalikan jumlah catatan saat ini
'
' ===== = ==
fungsi publik GetRecordCount()
GetRecordCount=int_totalRecord
fungsi akhir
' ===== = ==
'Class_Inisialisasi inisialisasi kelas
'Inisialisasi nilai halaman saat ini
'
' ===== = ==
Sub Kelas Pribadi_Inisialisasi
'=========
'Tetapkan nilai default untuk beberapa parameter
'=========
' XD_PageSize=10 'Tetapkan nilai default paging menjadi 10
'=========
'Dapatkan nilai saat ini
'=========
Jika Permintaan("halaman saat ini")="" Lalu
int_curpage=1
ElseIf not(IsNumeric(Request("currentpage"))) Kemudian
int_curpage=1
ElseIf CInt(Trim(Request("halaman saat ini")))<1 Lalu
int_curpage=1
Kalau tidak
Int_curpage=CInt(Trim(Permintaan("halaman saat ini")))
Berakhir Jika
Berakhir Sub
'=============== =
'ShowPage membuat bilah navigasi paging
'Ada beranda, halaman sebelumnya, halaman berikutnya, halaman terakhir, dan navigasi digital
'
'=================
Halaman Pertunjukan Sub Publik()
Redupkan str_tmp
XD_sURL = DapatkanUrl()
' int_totalRecord=XD_Rs.RecordCount
Jika int_totalRecord<=0 Lalu
str_error=str_error & "Jumlah total record nol, silakan masukkan data"
Panggilan Tampilkan Kesalahan()
Akhiri Jika
Jika int_totalRecord="" maka
int_TotalHalaman=1
Lain
'modifikasi oleh wls 041215 Untuk tampilan halaman yang tepat --------------
Jika int_totalRecord mod PageSize =0 Lalu
int_TotalPage = CLng(int_TotalRecord XD_PageSize * -1) *-1
Kalau tidak
int_TotalPage = CLng(int_TotalRecord XD_PageSize * -1)*-1+1
Berakhir Jika
Berakhir Jika
Jika Int_curpage>int_Totalpage Lalu
int_curpage=int_TotalPage
Berakhir Jika
'================ = ========
'Menampilkan informasi halaman, setiap modul mengubah posisi tampilan sesuai dengan kebutuhannya sendiri
' ===== ========
'respons.tulis " "
str_tmp=TampilkanPertamaPrv
respon.tulis str_tmp
str_tmp=tunjukkanNumBtn
respon.tulis str_tmp
str_tmp=TampilkanBerikutnyaTerakhir
respon.tulis str_tmp
str_tmp=TampilkanInfo Halaman
respon.tulis str_tmp
Respon.tulis " "
TampilkanGoto
End Sub
'=================
'ShowFirstPrv menampilkan beranda dan halaman sebelumnya
'
'
'=================
Fungsi Pribadi ShowFirstPrv()
Redupkan Str_tmp,int_prvpage
Jika int_curpage=1 Lalu
str_tmp=Btn_Pertama&" "&Btn_Sebelumnya
Jika tidak, int_curpage=0 maka
str_tmp=Btn_Pertama&" "&Btn_Sebelumnya
kalau tidak
int_prvpage=int_curpage-1
str_tmp="<a href=""#"" onclick=""javascript:generalSubmit('1')"" alt=""Halaman Pertama"">" & Btn_First&"</a> <a href="" # "" onclick=""javascript:generalSubmit('"&int_prvpage&"')"" alt=""Halaman sebelumnya"">" & Btn_Prev&"</a>"
Akhiri Jika
TampilkanPertamaPrv=str_tmp
Fungsi Akhir
'=================
'TampilkanBerikutnyaHalaman berikutnya terakhir, halaman terakhir
'
'
'=================
Fungsi Pribadi ShowNextLast()
Redupkan str_tmp,int_Nextpage
Jika Int_curpage>=int_totalpage Lalu
str_tmp=Btn_Berikutnya & " " & Btn_Terakhir
Kalau tidak
Int_Halaman Berikutnya=int_curhalaman+1
str_tmp="<a href=""#"" onclick=""javascript:generalSubmit('"&int_nextpage&"')"" alt=""Halaman berikutnya"">" & Btn_Berikutnya&"</a> <a href= "" #"" onclick=""javascript:generalSubmit('"&int_totalpage&"')"" alt=""Halaman Terakhir"">" & Btn_Terakhir&"</a>"
Akhiri Jika
TampilkanBerikutnyaTerakhir=str_tmp
Fungsi Akhir
'Fungsi Akhir
'=================
'ShowNumBtn memodifikasi navigasi numerik
'
'=================
Fungsi tampilkanNumBtn()
Redupkan i,str_tmp,end_page,start_page
start_page=1
'tambahkan paling lambat 2005.05.20 int_curpage=0
jika int_curpage=0 maka
str_tmp=str_tmp&"0"
kalau tidak
jika int_curpage>1 maka
halaman_mulai=int_curpage
jika (int_curpage<=5) maka
halaman_mulai=1
berakhir jika
jika (int_curpage>5) maka
halaman_mulai=int_curpage-2
berakhir jika
berakhir jika
halaman_akhir=halaman_awal+5
jika end_page>int_totalpage lalu
halaman_akhir=int_totalhalaman
berakhir jika
Untuk i=halaman_awal hingga halaman_akhir
strTemp=XD_sURL & CStr(i)
str_tmp=str_tmp & "[<a href=""#"" onclick=""javascript:generalSubmit('"&i&"')"">"&i&"</a>] "
Berikutnya
berakhir jika
tampilkanNumBtn=str_tmp
Fungsi Akhir
'=================
'Lompatan halaman ShowGoto
'Halaman otomatis melompat
'tambahkan paling lambat 2005.05.20
'=================
Fungsi Pribadi ShowGoto()
'response.tulis int_totalPage
dikurangi
jika int_totalPage<=0 maka
respon.tulis "<pilih nama='goto' dinonaktifkan>"
Respon.Tulis "<option value='0'>0</option>"
respon.tulis "</select>"
else
respon.tulis "<pilih nama='goto' onchange='javascript:generalSubmit(ini.nilai)'>"
untuk inti=1 ke int_totalPage
Response.Tulis "<option value='"&inti&"'"
jika cstr(inti)=cstr(int_curpage) maka
respon.tulis "dipilih"
berakhir jika
respon.tulis" >"&inti&"</option>"
Berikutnya
respon.tulis "</select>"
berakhir jika
Fungsi Akhir
'=================
'Informasi halaman ShowPageInfo
'Ubah sesuai kebutuhan
'
'=================
Fungsi Pribadi ShowPageInfo()
Redupkan str_tmp
str_tmp=" [Halaman:<font color=red>"&int_curpage&"</font>/"&int_totalpage&"] [Total item "&int_totalrecord&"] ["&XD_PageSize&" item/halaman]"
TampilkanInfoHalaman=str_tmp
Fungsi Akhir
'=================
'ShowPageSizeChange mengubah ukuran halaman
'Ubah sesuai kebutuhan
'
'=================
sub publik ShowPageSizeChange()
Redupkan str_tmp
str_tmp="Ukuran halaman: <pilih nama='sssssPageSize' onchange='changePageSize(this.value)'>"
str_tmp=str_tmp & "<pilihan"
jika XD_PageSize=10 maka str_tmp =str_tmp & " dipilih "
str_tmp=str_tmp & " nilai='10'>10</option>"
str_tmp=str_tmp & "<pilihan"
jika XD_PageSize=20 maka str_tmp =str_tmp & " dipilih "
str_tmp=str_tmp & " nilai='20'>20</option>"
str_tmp=str_tmp & "<pilihan"
jika XD_PageSize=50 maka str_tmp =str_tmp & " dipilih "
str_tmp=str_tmp & " nilai='50'>50</option>"
str_tmp=str_tmp & "<pilihan"
jika XD_PageSize=int_totalRecord maka str_tmp =str_tmp & " dipilih "
str_tmp=str_tmp & " value='" & int_totalRecord & "'>semua</option>"
str_tmp=str_tmp & "</pilih>"
respon.Tulis str_tmp
Sub akhir
'=================
'Fungsi yang dimodifikasi untuk mendapatkan parameter Url saat ini
'Kode oleh Redsun
'komentar northsnow: tidak tahu di mana menggunakannya, tapi simpanlah
'=================
Fungsi Pribadi GetUrl()
Redupkan ScriptAddress, M_ItemUrl, M_item
ScriptAddress = CStr(Request.ServerVariables("SCRIPT_NAME"))&"?" 'Dapatkan alamat saat ini
Jika (Request.QueryString <> "") Lalu
M_ItemUrl = ""
Untuk Setiap M_item Di Request.QueryString
Jika InStr("halaman",M_Item)=0 Lalu
M_ItemUrl = M_ItemUrl & M_Item &"="& Server.URLEncode(Request.QueryString(""&M_Item&"")) & "&"
Akhiri Jika
Berikutnya
ScriptAddress = ScriptAddress & M_ItemUrl 'Dapatkan alamat dengan parameter
Akhiri Jika
GetUrl = Alamat Skrip '& "halaman="
Fungsi Akhir
'=================
'Atur acara Penghentian.
'=================
Sub Kelas Pribadi_Terminate
'XD_RS.tutup
'Setel XD_RS=tidak ada
Akhiri Sub
'=================
'Pesan kesalahan ShowError
'=================
Sub Pribadi ShowError()
Jika str_Error <> "" Lalu
Respon.Tulis("" & SW_Error & "")
Respon.Akhir
Akhiri Jika
Akhir Sub
Akhir kelas
%>