(ต้นฉบับ vince6799)
การเพจในโค้ด asp นั้นค่อนข้างลำบาก โดยส่วนตัวแล้วฉันเขียนโค้ดการเพจออกเป็นสองฟังก์ชันในระหว่างขั้นตอนการเขียนโค้ด แม้ว่าฟังก์ชันนี้จะไม่สมบูรณ์ แต่ก็ควรจะเพียงพอสำหรับแอปพลิเคชันทั่วไป
-
'ฟังก์ชันเพจแบ่งออกเป็นสองฟังก์ชัน
ฟังก์ชันการคำนวณเพจ 'CalcPage(totalrec,msg_per_page,currentpage,n,rowcount,PageRs)
'PageList (ListType, url, query, Separator, ListLink) ฟังก์ชันรายการเพจจิ้ง'
ฟังก์ชันการคำนวณเพจจิ้ง
'totalrec จำนวนชุดบันทึกทั้งหมด
'msg_per_page จำนวนเรคคอร์ดที่แสดงในแต่ละเพจ ตัวแปรนี้จำเป็นต้องได้รับการกำหนดล่วงหน้าเมื่อเรียก CalcPage
'หน้าปัจจุบัน ตัวแปรหน้าปัจจุบัน คุณต้องกำหนดค่าให้กับตัวแปรนี้ล่วงหน้าเมื่อเรียก CalcPage
เป็นจำนวนหน้าทั้งหมด
'rowcount กำหนดจำนวนบันทึกข้อมูลต่อหน้า
'วัตถุชุดระเบียน PageRs
CalcPage ย่อย (totalrec, msg_per_page, หน้าปัจจุบัน, n, จำนวนแถว, PageRs)
n=0 'ตั้งค่าหมายเลขหน้าเป็น 0 เมื่อไม่มีบันทึก'
ถ้า currentpage="" แล้ว currentpage=0
'PageRs.EOF และ PageRs.bof ไม่มีบันทึก
'ไม่ใช่ PageRs.EOF หรือไม่ได้บันทึก PageRs.BOF
ถ้าไม่ใช่ PageRs.EOF หรือไม่ PageRs.BOF แล้ว
Totalrec=PageRs.recordcount
PageRs.pagesize=msg_per_page
ถ้า Totalrec mod msg_per_page = 0 จากนั้น 'คำนวณจำนวนหน้าทั้งหมด จำนวนบันทึก: จำนวนบันทึกข้อมูลทั้งหมด
n = Totalrecmsg_per_page 'n:จำนวนหน้าทั้งหมด
อื่น
n = ผลรวมmsg_per_page+1
สิ้นสุดถ้า
หากไม่ใช่ตัวเลข (หน้าปัจจุบัน) หรือ currentpage="" ดังนั้น currentpage=1
ถ้าหน้าปัจจุบัน <> "" แล้ว
หน้าปัจจุบัน = cint (หน้าปัจจุบัน)
สิ้นสุดถ้า
ถ้าหน้าปัจจุบัน < 1 แล้ว
หน้าปัจจุบัน = 1
สิ้นสุดถ้า
ถ้า currentpage*msg_per_page > Totalrec และไม่ใช่ ((currentpage-1)*msg_per_page < Totalrec) แล้ว
หน้าปัจจุบัน=1
สิ้นสุดถ้า
PageRs.absolutepage = currentpage 'absolutepage: ตั้งตัวชี้ไปที่จุดเริ่มต้นของหน้า
rowcount = PageRs.pagesize 'pagesize: ตั้งค่าจำนวนบันทึกข้อมูลสำหรับแต่ละหน้า
สิ้นสุดถ้า
จบย่อย
-
-
'ฟังก์ชั่นรายการเพจ
'ที่อยู่ข้าม URL
'แบบสอบถาม? พารามิเตอร์หลังจาก ?
'ตัวคั่น ตัวคั่น
'ประเภทเพจ ListType
'Type:0 "หน้าแรก | หน้าก่อน | หน้าถัดไป | หน้าสุดท้าย"
'ประเภท:1 "1 | 2 | 3 | 4 | ..........| หน้าถัดไป"
'ประเภท: 2 "หน้าแรก | สิบหน้าแรก | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | สิบหน้าถัดไป | หน้าสุดท้าย"
'สไตล์ที่ใช้โดยลิงก์ ListLink
ย่อย PageList (ListType, url, query, Separator, ListLink)
ถ้าตัวคั่น = "" แล้วก็ ตัวคั่น = "|"
ถ้า ListType="" แล้วก็ ListType="0"
เลือกกรณี ListType
กรณี "0"
response.write""¤tpage&"/"&n&"page "
response.write "รวม"&totalrec&" ส่วนของข้อมูล "
ถ้าหน้าปัจจุบัน <= 1 แล้ว
response.write"หน้าแรก "&ตัวคั่น&" "
response.write"หน้าก่อนหน้า "&ตัวคั่น&" "
อื่น
response.write"<a href="""&url&"?page=1&"&query&""" class="""&ListLink&""">หน้าแรก</a> "&Separator&" "
response.write"<a href="""&url&"?page="¤tpage-1&"&"&query&""" class="""&ListLink&""">หน้าก่อนหน้า</a> "&Separator&"  ; "
สิ้นสุดถ้า
ถ้าหน้าปัจจุบัน = n แล้ว
response.write"หน้าถัดไป "&ตัวคั่น&" "
response.write"หน้าสุดท้าย "
อื่น
response.write"<a href="""&url&"?page="¤tpage+1&"&"&query&""" class="""&ListLink&""">หน้าถัดไป</a> "&Separator&"  ; "
response.write"<a href="""&url&"?page="&n&"&"&query&""" class="""&ListLink&""">หน้าสุดท้าย</a> "
สิ้นสุดถ้า
กรณี "1"
ถ้าหน้าปัจจุบัน < n แล้ว
response.write"<a href="""&url&"?page="¤tpage+1&"&"&query&""" class="""&ListLink&""">หน้าถัดไป</a> "
อื่น
response.write"หน้าถัดไป "
สิ้นสุดถ้า
สำหรับ i=1 ถึง n
ถ้า cstr(i)=cstr(หน้าปัจจุบัน) แล้ว
response.write "<b>"&i&"</b>"&" "&ตัวคั่น&" "
อื่น
response.write"<a href="""&url&"?page="&i&"&"&query&""" class="""&ListLink&""">"&i&"</a> "&Separator&" "
สิ้นสุดถ้า
ต่อไป
กรณี "2"
PageMerCout=10 'จำนวนหน้าสูงสุดที่สามารถเปิดได้ในแต่ละครั้ง
'รับส่วนหมายเลขหน้าสูงสุดของเรกคอร์ด
ถ้า n mod PageMerCout=0 แล้ว
MaxPageFiled=nPageMerCout
อื่น
MaxPageFiled=nPageMerCout+1
สิ้นสุดถ้า
'กำหนดส่วนของหมายเลขหน้าซึ่งเป็นที่ตั้งของหน้าปัจจุบัน
ถ้า currentpage mod PageMerCout =0 แล้ว
CurrPageFiled=หน้าปัจจุบันPageMerCout
อื่น
CurrPageFiled=หน้าปัจจุบันPageMerCout+1
สิ้นสุดถ้า
'รับหมายเลขหน้าสูงสุดและหมายเลขหน้าขั้นต่ำของส่วนหมายเลขหน้าปัจจุบัน
MaxPageNo=CurrPageFiled*PageMerCout
MinPageNo=(CurrPageFiled-1)*PageMerCout+1
'ผลลัพธ์ "หน้าแรก | สิบหน้าแรก |"
ถ้า currentpage<=1 แล้ว
response.write"หน้าแรก "&ตัวคั่น&" "
อื่น
response.write"<a href="""&url&"?page=1&"&query&""" class="""&ListLink&""">หน้าแรก</a> "&Separator&" "
สิ้นสุดถ้า
ถ้า CurrPageFiled<=1 แล้ว
response.write"สิบหน้าแรก "&ตัวคั่น&" "
อื่น
response.write"<a href="""&url&"?page="&MinPageNo-PageMerCout&"&"&query&""" class="""&ListLink&""">สิบหน้าแรก</a> "&Separator&"  ;"
สิ้นสุดถ้า
'ส่งออกส่วนหมายเลขหน้าปัจจุบัน
สำหรับ i=MinPageNo ถึง MaxPageNo
ถ้าฉัน<=n แล้ว
ถ้า cstr(i)=cstr(หน้าปัจจุบัน) แล้ว
response.write "<b>"&i&"</b>"&" "&ตัวคั่น&" "
อื่น
response.write"<a href="""&url&"?page="&i&"&"&query&""">"&i&"</a> "&Separator&" "
สิ้นสุดถ้า
สิ้นสุดถ้า
ต่อไป
'เอาท์พุท "สิบหน้าถัดไป | หน้าสุดท้าย"
ถ้า CurrPageFiled>=MaxPageFiled แล้ว
response.write"สิบหน้าถัดไป "&ตัวคั่น&" "
อื่น
response.write"<a href="""&url&"?page="&MaxPageNo+1&"&"&query&""" class="""&ListLink&""">สิบหน้าถัดไป</a> "&Separator&"   ;"
สิ้นสุดถ้า
ถ้าหน้าปัจจุบัน>=n แล้ว
response.write"หน้าสุดท้าย "
อื่น
response.write"<a href="""&url&"?page="&n&"&"&query&""" class="""&ListLink&""">หน้าสุดท้าย</a> "
สิ้นสุดถ้า
สิ้นสุดการเลือก
จบย่อย
-