Paging ini menggunakan kursor 0 yaitu Rs.Open Sql,Conn,0,1. Tapi rasanya tidak lebih cepat, 10
Waktu paging untuk 10.000 data lebih dari 300 milidetik.
<%
Halaman Kelas
Halaman Curr Pribadi
Halaman PribadiN
UrlStr Pribadi
TempStr Pribadi
ErrInfo Pribadi
PribadiIsErr
TotalRecord Pribadi
TotalPage Pribadi
Halaman Publik
(11)
TempB Pribadi(8)
'------------------------------------------------ - ---------
Sub Kelas Pribadi_Inisialisasi()
CurrPage=1'//Halaman saat ini ditampilkan sebagai halaman pertama secara default
PageN=10'//Secara default, 10 buah data ditampilkan di setiap halaman
UrlStr="#"
SuhuStr=""
ErrInfo="ErrInfo:"
IsErr=Salah
Akhiri Sub
Sub Kelas_Terminate() Pribadi
Jika IsObject(PageRs) Lalu
HalamanRs.Tutup
Setel PageRs=Tidak Ada
Akhiri Jika
Hapus TempA
Hapus TempB
Akhiri Sub
'------------------------------------------------ - ---------
'//Dapatkan nomor halaman saat ini
Properti Publik Biarkan Halaman Saat Ini(Val)
Halaman Saat Ini=Val
Properti Akhir
Properti Publik Dapatkan Halaman Saat Ini()
Halaman Saat Ini=Halaman Saat Ini
Properti Akhir
'//Dapatkan jumlah item yang ditampilkan di setiap halaman
Milik Umum Izinkan PageNum(Val)
HalamanN=Val
Properti Akhir
Properti Publik Dapatkan PageNum()
Nomor Halaman=HalamanN
Properti Akhir
'//Dapatkan URL
Properti Publik Biarkan Url (Val)
UrlStr=Val
Properti Akhir
Properti Publik Dapatkan Url()
Url=UrlStr
Properti Akhir
'//Dapatkan templatnya
Milik Umum Biarkan Temp(Val)
SuhuStr=Val
Properti Akhir
Properti Publik Dapatkan Temp()
Suhu=TempStr
Properti Akhir
'------------------------------------------------ - ----------
Sub Eksekutif Publik(Sql,ConnObj)
Pada Kesalahan Lanjutkan Berikutnya
Setel PageRs=Server.CreateObject("ADODB.RecordSet")
PageRs.CursorLocation = 3 'Menggunakan kursor sisi klien dapat meningkatkan efisiensi
PageRs.PageSize = PageN 'Tentukan jumlah record yang ditampilkan pada setiap halaman kumpulan record paging
HalamanRs.Open Sql,ConnObj,0,1
Jika Err.Number<>0 Lalu
Err. Jelas
HalamanRs.Tutup
Setel PageRs=Tidak Ada
ErrInfo=ErrInfo&"Kesalahan saat membuat atau membuka kumpulan data..."
IsErr=Benar
Respon.Tulis ErrInfo
Respon.Akhir
Akhiri Jika
TotalRecord=PageRs.RecordCount'//Bagaimana jika 0?
Jika TotalRecord>=1 Maka
'------------------------------------------------ - --------------------------awal
'//Hitung jumlah halamannya Ps, kenapa tidak pakai PageRs.PageCount?
'Jika TotalRecord Mod PageN=0 Lalu
'TotalPage=PageRs.RecordCountPageN
'Kalau tidak
'TotalPage=PageRs.RecordCountPageN
'TotalPage=Abs(Int(TotalPage))
'Akhiri Jika
TotalPage=PageRs.PageCount
'//Proses nomor halaman yang diterima saat ini, defaultnya adalah 1, jadi jika bukan tipe numerik, maka akan menjadi 1
Jika IsNumeric(CurrPage) Lalu
Halaman Saat Ini=CLNg(Halaman Saat Ini)
Jika CurrPage<1 Maka CurrPage=1
Jika CurrPage>TotalPage Maka CurrPage=TotalPage
Kalau tidak
'//Redupkan M:M="":IsNumerik(M)=Benar
Halaman Saat Ini=1
Akhiri Jika
'------------------------------------------------ - -------------------------Menyelesaikan
Kalau tidak
Total Halaman=0
Halaman Saat Ini=1
Akhiri Jika
'//
PageRs.AbsolutePage = CurrPage 'absolutepage: Mengatur penunjuk ke awal halaman
HalamanRs.UkuranPage=HalamanN
Akhiri Sub
Sub Init Pribadi()
'Suhu Pribadi (10)
TempA(1)="{N1}" '//Halaman Beranda
TempA(2)="{N2}"'//Halaman sebelumnya
TempA(3)="{N3}"'//Halaman berikutnya
TempA(4)="{N4}"'//Halaman terakhir
TempA(5)="{N5}"'//Nomor halaman saat ini
TempA(6)="{N6}"'//Jumlah total halaman
TempA(7)="{N7}"'//Jumlah item per halaman
TempA(8)="{N8}"'//Jumlah total artikel
TempA(9)="{L}"'//Awal label loop
TempA(10)="{N}"'//Label tunggal dalam lingkaran: nomor halaman
TempA(11)="{L/}"'//Akhir label loop
'TempB Pribadi(8)
TempB(1)="Beranda"
TempB(2)="Halaman sebelumnya"
TempB(3)="Halaman selanjutnya"
TempB(4)="Halaman terakhir"
TempB(5)=CurrPage'//Nomor halaman saat ini
TempB(6)=TotalPage'//Jumlah total halaman
TempB(7)=PageN'//Jumlah item per halaman
TempB(8)=TotalRecord'//Jumlah total artikel
Akhiri Sub
Sub Pertunjukan Publik (Gaya)
Jika IsErr=Benar Maka
Respon.Tulis ErrInfo
Keluar dari Sub
Akhiri Jika
Panggilan Init()
Pilih Gaya Kasus
Kasus 1
Respon.Tulis StyleA()
Kasus 2
Respon.Tulis StyleB()
Kasus 3
Respon.Tulis StyleC()
Kasus 4
Respon.Tulis StyleD()
Kasus Lain
ErrInfo=ErrInfo&"Gaya saat ini tidak ada..."
Respon.Tulis ErrInfo
Pilihan Akhir
Akhiri Sub
Fungsi Publik ShowStyle(Gaya)
Jika IsErr=Benar Maka
ShowStyle=ErrInfo
Fungsi Keluar
Akhiri Jika
Panggilan Init()
Pilih Gaya Kasus
Kasus 1
Gaya Pertunjukan= GayaA()
Kasus 2
Gaya Pertunjukan= GayaB()
Kasus Lain
ErrInfo=ErrInfo&"Gaya saat ini tidak ada..."
ShowStyle=ErrInfo
Pilihan Akhir
Fungsi Akhir
Fungsi Pribadi StyleA()
'Halaman Beranda Halaman Sebelumnya Halaman Berikutnya Halaman Terakhir Halaman ini halaman 1/20, total 20 halaman, 10 artikel per halaman, dan total 200 artikel.
'//Contoh penomoran halaman: [Beranda] [Halaman sebelumnya] [Halaman berikutnya] [Halaman terakhir] [Halaman: 4/5 halaman] [Total 86 artikel/20 artikel/halaman] Buka: _ halaman
'//Tag: {N1} {N2} {N3} {N4} ||. Total: {N8} catatan {N6} halaman saat ini adalah {N5} halaman {N7} catatan per halaman
Jika IsEmpty(TempStr) Lalu
ErrInfo=ErrInfo&"Templatnya kosong..."
GayaB=ErrInfo
Fungsi Keluar
Akhiri Jika
Redup
Jika TotalPage>1 Lalu
Jika CurrPage>1 Lalu
M="<a href='"&UrlStr&"Page=1'>"&"Beranda"&"</a>"
TempStr=Ganti(TempStr,"{N1}",M)
M="<a href='"&UrlStr&"Page="&CurrPage-1&"'>"&"Halaman sebelumnya"&"</a>"
TempStr=Ganti(TempStr,"{N2}",M)
Jika CurrPage<TotalPage Lalu
M="<a href='"&UrlStr&"Page="&CurrPage+1&"'>"&"Halaman berikutnya"&"</a>"
TempStr=Ganti(TempStr,"{N3}",M)
M="<a href='"&UrlStr&"Page="&TotalPage&"'>"&"Halaman Terakhir"&"</a>"
TempStr=Ganti(TempStr,"{N4}",M)
Kalau tidak
TempStr=Ganti(TempStr,"{N3}","Halaman berikutnya")
TempStr=Ganti(TempStr,"{N4}","Halaman terakhir")
Akhiri Jika
Kalau tidak
TempStr=Ganti(TempStr,"{N1}","Beranda")
TempStr=Ganti(TempStr,"{N2}","Halaman sebelumnya")
M="<a href='"&UrlStr&"Page="&CurrPage+1&"'>"&"Halaman berikutnya"&"</a>"
TempStr=Ganti(TempStr,"{N3}",M)
M="<a href='"&UrlStr&"Page="&TotalPage&"'>"&"Halaman Terakhir"&"</a>"
TempStr=Ganti(TempStr,"{N4}",M)
Akhiri Jika
Kalau tidak
TempStr=Ganti(TempStr,"{N1}","Beranda")
TempStr=Ganti(TempStr,"{N2}","Halaman sebelumnya")
TempStr=Ganti(TempStr,"{N3}","Halaman selanjutnya")
TempStr=Ganti(TempStr,"{N4}","Halaman terakhir")
Akhiri Jika
T=TempStr
T=Ganti(T,"{N8}",TotalRecord)
T=Ganti(T,"{N6}",TotalHalaman)
T=Ganti(T,"{N5}",Halaman Saat Ini)
T=Ganti(T,"{N7}",HalamanN)
SuhuStr=T
GayaA=TempStr
Fungsi Akhir
Fungsi Pribadi StyleB()
'Beranda|< 1 2 3 4 5 6 7 >|
'//Tag:{N1} {N2} {L}{N}{L/}{N3}{N4}
Jika IsEmpty(TempStr) Lalu
ErrInfo=ErrInfo&"Templatnya kosong..."
GayaB=ErrInfo
Fungsi Keluar
Akhiri Jika
Redupkan ForceNum,BackNum'//Nomor yang ditampilkan di depan dan di belakang halaman saat ini
Angka Angkatan=5
Nomor Kembali=4
Redup
'//halaman depan
M="<a href='"&UrlStr&"Page=1'>"&TempB(1)&"</a>"
TempStr=Ganti(TempStr,"{N1}",M)
'//Halaman terakhir
M="<a href='"&UrlStr&"Page="&TempB(6)&"'>"&TempB(4)&"</a>"
TempStr=Ganti(TempStr,"{N4}",M)
'//Halaman sebelumnya
M="|<"
Jika CurrPage-1>=1 Lalu
M="<a href='"&UrlStr&"Page="&CurrPage-1&"'>"&"|<"&"</a>"
Akhiri Jika
TempStr=Ganti(TempStr,"{N2}",M)
'//Halaman selanjutnya
M=">|"
Jika CurrPage+1<=TotalPage Lalu
M="<a href='"&UrlStr&"Page="&CurrPage+1&"'>"&">|"&"</a>"
Akhiri Jika
TempStr=Ganti(TempStr,"{N3}",M)
'//Hapus label lingkaran
Redupkan N1,N2,N3,N4,N5,N6
Jika InStr(TempStr,"{L}")>0 Lalu
N1=InStr(TempStr,"{L}")
Akhiri Jika
Jika InStr(TempStr,"{L/}")>0 Lalu
N2=InStr(TempStr,"{L/}")
Akhiri Jika
Jika N2<=N1 Maka
ErrInfo=ErrInfo&"Kesalahan pada label loop..."
GayaB=ErrInfo
Fungsi Keluar
Akhiri Jika
N3=Mid(TempStr,N1,N2-N1+4)'//Template penyimpanan termasuk tag loop {L}{L/}
N4=Replace(N3,"{L}","")'//Template penyimpanan yang tidak menyertakan tag loop {L}{L/}
N4=Ganti(N4,"{L/}","")
'//Daftar nomor halaman
Redupkan FirstPageNum,LastPageNum
Jika CurrPage-ForceNum<=1 Lalu
NomorHalaman Pertama=1
Daftar Halaman=""
Kalau tidak
FirstPageNum=CurrPage-ForceNum
Daftar Halaman="......"
Akhiri Jika
Jika CurrPage+BackNum>=TotalPage Lalu
LastPageNum=TotalHalaman
Daftar Halaman_2=""
Kalau tidak
LastPageNum=CurrPage+BackNum
DaftarHalaman_2="......"
Akhiri Jika
Redupkan aku
Untuk I=FirstPageNum Hingga LastPageNum
Jika I=CurrPage Lalu
N5=Ganti(N4,"{N}","<b>"&I&"</b>")
N6=N6&N5
Kalau tidak
M="<a href='"&UrlStr&"Page="&I&"'>"&I&"</a>"
N5=Ganti(N4,"{N}",M)
N6=N6&N5
Akhiri Jika
Berikutnya
TempStr=Ganti(TempStr,N3,N6)
GayaB=TempStr
Fungsi Akhir
Fungsi Pribadi StyleC()
'Beranda|< |<< 1 2 3 4 5 6 7 >>| >|
'//Gaya ini dimodifikasi berdasarkan StyleB, menambahkan dua tag: {N9} 10 halaman sebelumnya {N10} 10 halaman berikutnya
'//Tag:{N1}{N2}{N9}{L}{N}{L/}{N10}{N3}{N4}
Redupkan T
T=GayaB()
'//Sepuluh halaman pertama
M="|<<"
Jika CurrPage-10>=1 Lalu
M="<a href='"&UrlStr&"Page="&CurrPage-10&"'>"&"|<<"&"</a>"
Akhiri Jika
T=Ganti(T,"{N9}",M)
M=">>|"
Jika CurrPage+10<=TotalPage Lalu
M="<a href='"&UrlStr&"Page="&CurrPage+10&"'>"&">>|"&"</a>"
Akhiri Jika
T=Ganti(T,"{N10}",M)
GayaC=T
Fungsi Akhir
Fungsi Pribadi StyleD()
'//Gaya ini dimodifikasi berdasarkan StyleC
'//Total {N8} data {N6} halaman saat ini adalah {N5} halaman {N7} data per halaman
'//Beranda|< |<< 1 2 3 4 5 6 7 >>| >|
'//Tag:{N1}{N2}{N9}{L}{N}{L/}{N10}{N3}{N4}
Redupkan T
T=GayaC()
T=Ganti(T,"{N8}",TotalRecord)
T=Ganti(T,"{N6}",TotalHalaman)
T=Ganti(T,"{N5}",Halaman Saat Ini)
T=Ganti(T,"{N7}",HalamanN)
GayaD=T
Fungsi Akhir
Kelas Akhir
%>