เพจนี้ใช้เคอร์เซอร์ 0 ซึ่งก็คือ Rs.Open Sql,Conn,0,1 แต่ก็ไม่ได้รู้สึกเร็วขึ้นมากนัก 10
เวลาเพจสำหรับข้อมูล 10,000 ชิ้นคือมากกว่า 300 มิลลิวินาที
-
หน้าชั้นเรียน
CurrPage ส่วนตัว
เพจส่วนตัวN
UrlStr. ส่วนตัว
TempStr ส่วนตัว
ข้อผิดพลาดส่วนตัว
ส่วนตัวIsErr
TotalRecord ส่วนตัว
TotalPage ส่วนตัว
หน้าสาธารณะRs
ส่วนตัว TempA(11)
ส่วนตัว TempB(8)
'------------------------------------------------ - ---------
Class_Initialize ส่วนตัว ()
CurrPage=1'//หน้าปัจจุบันจะแสดงเป็นหน้าแรกตามค่าเริ่มต้น
PageN=10'//โดยค่าเริ่มต้น ข้อมูล 10 ชิ้นจะแสดงในแต่ละหน้า
UrlStr="#"
TempStr=""
ErrInfo="ข้อผิดพลาดข้อมูล:"
IsErr=เท็จ
จบหมวดย่อย
Class_Terminate ส่วนตัวย่อย ()
ถ้า IsObject(PageRs) แล้ว
เพจอาร์ปิด
ตั้งค่า PageRs=ไม่มีอะไร
สิ้นสุดถ้า
ลบ TempA
ลบ TempB
จบหมวดย่อย
'------------------------------------------------ - ---------
'//รับหมายเลขหน้าปัจจุบัน
ทรัพย์สินสาธารณะ Let CurrentPage(Val)
CurrPage=วาล
สิ้นสุดคุณสมบัติ
ทรัพย์สินสาธารณะรับ CurrentPage()
หน้าปัจจุบัน=CurrPage
สิ้นสุดคุณสมบัติ
'//รับจำนวนรายการที่แสดงในแต่ละหน้า
ทรัพย์สินสาธารณะ ให้ PageNum(Val)
PageN=วาล
สิ้นสุดคุณสมบัติ
ทรัพย์สินสาธารณะรับ PageNum()
PageNum=เพจN
สิ้นสุดคุณสมบัติ
'//รับ URL
ทรัพย์สินสาธารณะให้ URL (Val)
UrlStr=วาล
สิ้นสุดคุณสมบัติ
ทรัพย์สินสาธารณะรับ URL ()
Url=UrlStr
สิ้นสุดคุณสมบัติ
'//รับเทมเพลต
ทรัพย์สินสาธารณะ Let Temp (Val)
TempStr=วาล
สิ้นสุดคุณสมบัติ
ทรัพย์สินสาธารณะรับ Temp()
อุณหภูมิ=TempStr
สิ้นสุดคุณสมบัติ
'------------------------------------------------ - ----------
ผู้บริหารย่อยสาธารณะ (Sql, ConnObj)
เมื่อเกิดข้อผิดพลาด ดำเนินการต่อต่อไป
ตั้งค่า PageRs=Server.CreateObject("ADODB.RecordSet")
PageRs.CursorLocation = 3 'การใช้เคอร์เซอร์ฝั่งไคลเอ็นต์สามารถปรับปรุงประสิทธิภาพได้
PageRs.PageSize = PageN 'กำหนดจำนวนเรคคอร์ดที่แสดงในแต่ละหน้าของชุดบันทึกการเพจ
PageRs.Open Sql,ConnObj,0,1
ถ้า Err.Number<>0 แล้ว
ผิดพลาด.เคลียร์
เพจอาร์ปิด
ตั้งค่า PageRs=ไม่มีอะไร
ErrInfo=ErrInfo&"เกิดข้อผิดพลาดในการสร้างหรือเปิดชุดระเบียน..."
IsErr=จริง
ตอบกลับ เขียน ErrInfo
การตอบสนองสิ้นสุด
สิ้นสุดถ้า
TotalRecord=PageRs.RecordCount'//ถ้าเป็น 0 ล่ะ?
ถ้า TotalRecord>=1 แล้ว
'------------------------------------------------ - --------------------------เริ่ม
'//คำนวณจำนวนหน้าทั้งหมด ปล ทำไมไม่ใช้ PageRs.PageCount ล่ะ?
'ถ้า TotalRecord Mod PageN=0 แล้ว'
'TotalPage=PageRs.RecordCountPageN
'อื่น
'TotalPage=PageRs.RecordCountPageN
'TotalPage=Abs(Int(TotalPage))
'สิ้นสุดถ้า
TotalPage=PageRs.PageCount
'//ประมวลผลหมายเลขหน้าที่ได้รับในปัจจุบัน โดยค่าเริ่มต้นคือ 1 ดังนั้นหากไม่ใช่ประเภทตัวเลข จะเป็น 1
ถ้าเป็นตัวเลข(CurrPage) แล้ว
CurrPage=CLNg(CurrPage)
ถ้า CurrPage<1 ดังนั้น CurrPage=1
ถ้า CurrPage>TotalPage แล้ว CurrPage=TotalPage
อื่น
'//Dim M:M="":IsNumeric(M)=True
CurrPage=1
สิ้นสุดถ้า
'------------------------------------------------ - -------------------------เสร็จ
อื่น
หน้ารวม=0
CurrPage=1
สิ้นสุดถ้า
-
PageRs.AbsolutePage = CurrPage 'absolutepage: ตั้งค่าตัวชี้ไปที่จุดเริ่มต้นของหน้า
PageRs.PageSize=PageN
จบหมวดย่อย
เริ่มต้นย่อยส่วนตัว()
'TempA ส่วนตัว(10)
TempA(1)="{N1}" '//หน้าแรก
TempA(2)="{N2}"'//หน้าก่อนหน้า
TempA(3)="{N3}"'//หน้าถัดไป
TempA(4)="{N4}"'//หน้าสุดท้าย
TempA(5)="{N5}"'//หมายเลขหน้าปัจจุบัน
TempA(6)="{N6}"'//จำนวนหน้าทั้งหมด
TempA(7)="{N7}"'//จำนวนรายการต่อหน้า
TempA(8)="{N8}"'//จำนวนบทความทั้งหมด
TempA(9)="{L}"'//จุดเริ่มต้นของป้ายกำกับลูป
TempA(10)="{N}"'//ป้ายกำกับเดียวในลูป: หมายเลขหน้า
TempA(11)="{L/}"'//สิ้นสุดป้ายกำกับลูป
'อุณหภูมิส่วนตัวB(8)
TempB(1)="บ้าน"
TempB(2)="หน้าก่อน"
TempB(3)="หน้าถัดไป"
TempB(4)="หน้าสุดท้าย"
TempB(5)=CurrPage'//หมายเลขหน้าปัจจุบัน
TempB(6)=TotalPage'//จำนวนหน้าทั้งหมด
TempB(7)=PageN'//จำนวนรายการต่อหน้า
TempB(8)=TotalRecord'//จำนวนบทความทั้งหมด
จบหมวดย่อย
การแสดงย่อยสาธารณะ (สไตล์)
ถ้า IsErr=True แล้ว
ตอบกลับ เขียน ErrInfo
ออกจากย่อย
สิ้นสุดถ้า
โทร Init()
เลือกสไตล์เคส
กรณีที่ 1
การตอบสนองเขียน StyleA()
กรณีที่ 2
การตอบสนองเขียน StyleB()
กรณีที่ 3
การตอบสนองเขียน StyleC()
กรณีที่ 4
การตอบสนองเขียน StyleD()
กรณีอื่น
ErrInfo=ErrInfo&"ไม่มีสไตล์ปัจจุบัน..."
ตอบกลับ เขียน ErrInfo
สิ้นสุดการเลือก
จบหมวดย่อย
งานสาธารณะ ShowStyle(Style)
ถ้า IsErr=True แล้ว
ShowStyle=ข้อผิดพลาดข้อมูล
ออกจากฟังก์ชัน
สิ้นสุดถ้า
โทร Init()
เลือกสไตล์เคส
กรณีที่ 1
ShowStyle= สไตล์เอ()
กรณีที่ 2
ShowStyle= สไตล์บี()
กรณีอื่น
ErrInfo=ErrInfo&"ไม่มีสไตล์ปัจจุบัน..."
ShowStyle=ข้อผิดพลาดข้อมูล
สิ้นสุดการเลือก
ฟังก์ชันสิ้นสุด
ฟังก์ชันส่วนตัว StyleA()
'หน้าแรก หน้าก่อน หน้าถัดไป หน้าสุดท้าย หน้านี้เป็นหน้า 1/20 รวม 20 หน้า 10 บทความต่อหน้า และรวม 200 บทความ
'//ตัวอย่างการแบ่งหน้า: [หน้าแรก] [หน้าก่อนหน้า] [หน้าถัดไป] [หน้าสุดท้าย] [หน้า: 4/5 หน้า] [ทั้งหมด 86 บทความ/20 บทความ/หน้า] ไปที่: _ หน้า
'//Tag: {N1} {N2} {N3} {N4} ||. รวม: {N8} บันทึก {N6} หน้าปัจจุบันคือ {N5} หน้า {N7} บันทึกต่อหน้า
ถ้า IsEmpty(TempStr) แล้ว
ErrInfo=ErrInfo&"เทมเพลตว่างเปล่า..."
StyleB=ข้อมูลข้อผิดพลาด
ออกจากฟังก์ชัน
สิ้นสุดถ้า
ดิม
ถ้า TotalPage>1 แล้ว
ถ้า CurrPage>1 แล้ว
M="<a href='"&UrlStr&"Page=1'>"&"Home"&"</a>"
TempStr=แทนที่(TempStr,"{N1}",M)
M="<a href='"&UrlStr&"Page="&CurrPage-1&"'>"&"หน้าก่อนหน้า"&"</a>"
TempStr=แทนที่(TempStr,"{N2}",M)
ถ้า CurrPage<TotalPage แล้ว
M="<a href='"&UrlStr&"Page="&CurrPage+1&"'>"&"หน้าถัดไป"&"</a>"
TempStr=แทนที่(TempStr,"{N3}",M)
M="<a href='"&UrlStr&"Page="&TotalPage&"'>"&"หน้าสุดท้าย"&"</a>"
TempStr=แทนที่(TempStr,"{N4}",M)
อื่น
TempStr=แทนที่(TempStr,"{N3}", "หน้าถัดไป")
TempStr=Replace(TempStr,"{N4}", "หน้าสุดท้าย")
สิ้นสุดถ้า
อื่น
TempStr=แทนที่(TempStr,"{N1}", "หน้าแรก")
TempStr=แทนที่(TempStr,"{N2},"หน้าก่อนหน้า")
M="<a href='"&UrlStr&"Page="&CurrPage+1&"'>"&"หน้าถัดไป"&"</a>"
TempStr=แทนที่(TempStr,"{N3}",M)
M="<a href='"&UrlStr&"Page="&TotalPage&"'>"&"หน้าสุดท้าย"&"</a>"
TempStr=แทนที่(TempStr,"{N4}",M)
สิ้นสุดถ้า
อื่น
TempStr=แทนที่(TempStr,"{N1}", "หน้าแรก")
TempStr=แทนที่(TempStr,"{N2},"หน้าก่อนหน้า")
TempStr=แทนที่(TempStr,"{N3}", "หน้าถัดไป")
TempStr=Replace(TempStr,"{N4}", "หน้าสุดท้าย")
สิ้นสุดถ้า
T=TempStr
T=แทนที่(T,"{N8}",บันทึกรวม)
T=แทนที่(T,"{N6}",หน้ารวม)
T=แทนที่(T,"{N5}",CurrPage)
T=แทนที่(T,"{N7}",หน้าN)
TempStr=T
StyleA=TempStr
ฟังก์ชันสิ้นสุด
ฟังก์ชันส่วนตัว StyleB()
'หน้าแรก|< 1 2 3 4 5 6 7 >|
'//แท็ก:{N1} {N2} {L}{N}{L/}{N3}{N4}
ถ้า IsEmpty(TempStr) แล้ว
ErrInfo=ErrInfo&"เทมเพลตว่างเปล่า..."
StyleB=ข้อมูลข้อผิดพลาด
ออกจากฟังก์ชัน
สิ้นสุดถ้า
Dim ForceNum,BackNum'//ตัวเลขที่แสดงด้านหน้าและด้านหลังหน้าปัจจุบัน
ForceNum=5
BackNum=4
ดิม
'//หน้าแรก
M="<a href='"&UrlStr&"Page=1'>"&TempB(1)&"</a>"
TempStr=แทนที่(TempStr,"{N1}",M)
'//หน้าสุดท้าย
M="<a href='"&UrlStr&"Page="&TempB(6)&"'>"&TempB(4)&"</a>"
TempStr=แทนที่(TempStr,"{N4}",M)
'//หน้าที่แล้ว
ม="|<"
ถ้า CurrPage-1>=1 แล้ว
M="<a href='"&UrlStr&"Page="&CurrPage-1&"'>"&"|<"&"</a>"
สิ้นสุดถ้า
TempStr=แทนที่(TempStr,"{N2}",M)
'//หน้าถัดไป
ม=">|"
ถ้า CurrPage+1<=TotalPage แล้ว
M="<a href='"&UrlStr&"Page="&CurrPage+1&"'>"&">|"&"</a>"
สิ้นสุดถ้า
TempStr=แทนที่(TempStr,"{N3}",M)
'//ลบป้ายกำกับลูปออก
หรี่ N1,N2,N3,N4,N5,N6
ถ้า InStr(TempStr,"{L}")>0 แล้ว
N1=InStr(TempStr,"{L}")
สิ้นสุดถ้า
ถ้า InStr(TempStr,"{L/}")>0 แล้ว
N2=InStr(TempStr,"{L/}")
สิ้นสุดถ้า
ถ้า N2<=N1 แล้ว
ErrInfo=ErrInfo&"ข้อผิดพลาดในป้ายกำกับลูป..."
StyleB=ข้อมูลข้อผิดพลาด
ออกจากฟังก์ชัน
สิ้นสุดถ้า
N3=Mid(TempStr,N1,N2-N1+4)'//เทมเพลตการจัดเก็บรวมถึงแท็กวนซ้ำ {L}{L/}
N4=Replace(N3,"{L}","")'//เทมเพลตพื้นที่เก็บข้อมูลที่ไม่มีแท็กวนซ้ำ {L}{L/}
N4=แทนที่(N4,"{L/}","")
'//รายการหมายเลขหน้า
หรี่ FirstPageNum, LastPageNum
ถ้า CurrPage-ForceNum<=1 แล้ว
FirstPageNum=1
รายการหน้า = ""
อื่น
FirstPageNum=CurrPage-ForceNum
รายการเพจ="... ..."
สิ้นสุดถ้า
ถ้า CurrPage+BackNum>=TotalPage แล้ว
LastPageNum=หน้าทั้งหมด
รายการเพจ_2=""
อื่น
LastPageNum=CurrPage+BackNum
PageList_2="... ..."
สิ้นสุดถ้า
ดิม ไอ
สำหรับ I=FirstPageNum ถึง LastPageNum
ถ้า I=CurrPage แล้ว
N5=แทนที่(N4,"{N}","<b>"&I&"</b>")
N6=N6&N5
อื่น
M="<a href='"&UrlStr&"Page="&I&"'>"&I&"</a>"
N5=แทนที่(N4,"{N}",M)
N6=N6&N5
สิ้นสุดถ้า
ต่อไป
TempStr=แทนที่(TempStr,N3,N6)
StyleB=TempStr
ฟังก์ชันสิ้นสุด
ฟังก์ชันส่วนตัว StyleC()
'หน้าแรก|< |<< 1 2 3 4 5 6 7 >>|
'//สไตล์นี้ได้รับการแก้ไขตาม StyleB โดยเพิ่มสองแท็ก: {N9} 10 หน้าก่อนหน้า {N10} 10 หน้าถัดไป
'//แท็ก:{N1}{N2}{N9}{L}{N}{L/}{N10}{N3}{N4}
ดิม ที
T=สไตล์B()
'//สิบหน้าแรก
ม="|<<"
ถ้า CurrPage-10>=1 แล้ว
M="<a href='"&UrlStr&"Page="&CurrPage-10&"'>"&"|<<"&"</a>"
สิ้นสุดถ้า
T=แทนที่(T,"{N9}",M)
ม=">>|"
ถ้า CurrPage+10<=TotalPage จากนั้น
M="<a href='"&UrlStr&"Page="&CurrPage+10&"'>"&">>|"&"</a>"
สิ้นสุดถ้า
T=แทนที่(T,"{N10}",M)
สไตล์C=T
ฟังก์ชันสิ้นสุด
ฟังก์ชันส่วนตัว StyleD()
'//สไตล์นี้ได้รับการแก้ไขตาม StyleC
'//รวม {N8} บันทึก {N6} หน้าปัจจุบันคือ {N5} หน้า {N7} บันทึกต่อหน้า
'//หน้าแรก|< |<< 1 2 3 4 5 6 7 >>|
'//แท็ก:{N1}{N2}{N9}{L}{N}{L/}{N10}{N3}{N4}
ดิม ที
T=สไตล์ซี()
T=แทนที่(T,"{N8}",บันทึกรวม)
T=แทนที่(T,"{N6}",หน้ารวม)
T=แทนที่(T,"{N5}",CurrPage)
T=แทนที่(T,"{N7}",หน้าN)
สไตล์D=T
ฟังก์ชันสิ้นสุด
คลาสสิ้นสุด
-