(원본 vince6799)
ASP 코드에서의 페이징은 약간 번거롭습니다. 비록 함수가 완벽하지는 않지만 일반 응용 프로그램에서는 충분할 것입니다.
<%
'페이징 기능은 두 가지 기능으로 나뉜다.
'CalcPage(totalrec,msg_per_page,currentpage,n,rowcount,PageRs) 페이징 계산 함수
'PageList(ListType,url,query,Separator,ListLink) 페이징 목록
계산 함수
'totalrec 총 레코드 세트 수
'msg_per_page 각 페이지에 표시되는 레코드 수입니다. CalcPage 호출 시 미리 지정해 주어야 하는 변수입니다.
'currentpage 현재 페이지 변수, CalcPage 호출 시 미리 이 변수에 값을 할당해야 합니다.
'n 총 페이지 수
'rowcount는 페이지당 데이터 레코드 수를 설정합니다.
'PageRs 레코드세트 객체
하위 CalcPage(totalrec,msg_per_page,현재 페이지,n,rowcount,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
if totalrec mod msg_per_page = 0이면 '총 페이지 수를 계산합니다. Recordcount: 데이터의 총 레코드 수
n = totalrecmsg_per_page 'n:총 페이지 수
또 다른
n = 총recmsg_per_page+1
종료하면
isnumeric(currentpage) 또는 currentpage=""가 아닌 경우 currentpage=1입니다.
현재 페이지 <> ""인 경우
현재페이지 = cint(현재페이지)
종료하면
현재 페이지 < 1이면
현재 페이지 = 1
종료하면
currentpage*msg_per_page > totalrec이고 not((currentpage-1)*msg_per_page < totalrec)인 경우
현재페이지=1
종료하면
PageRs.absolutepage = currentpage 'absolutepage: 페이지 시작 부분에 포인터를 설정합니다.
rowcount = PageRs.pagesize 'pagesize: 각 페이지의 데이터 레코드 수를 설정합니다.
종료하면
서브 끝
%>
<%
'페이징리스트 기능
'URL 점프 주소
'다음의 매개변수?
'구분자 구분자
'ListType 페이징 유형
'유형:0 "첫 번째 페이지 | 이전 페이지 | 다음 페이지 | 마지막 페이지"
'유형:1 "1 | 2 | 3 | 4 | ..........| 다음 페이지"
'유형: 2 "첫 번째 페이지 | 처음 10페이지 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 다음 10페이지 | 마지막 페이지"
하위 PageList(ListType,url,query,Separator,ListLink)
에서 사용되는 스타일
if Separator="" then Separator="|"
ListType=""이면 ListType="0"
사례 목록 유형 선택
케이스 "0"
response.write""&현재페이지&"/"&n&"페이지 "
response.write "Total"&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>"&" "&Separator&" "
또 다른
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
'"첫 번째 페이지 | 처음 10페이지 |" 출력
현재 페이지<=1이면
response.write"첫 번째 페이지 "&구분 기호&" "
또 다른
response.write"<a href="""&url&"?page=1&"&query&""" class="""&ListLink&""">첫 번째 페이지</a> "&Separator&" "
종료하면
CurrPageFiled<=1이면
response.write"처음 10페이지 "&구분 기호&" "
또 다른
response.write"<a href="""&url&"?page="&MinPageNo-PageMerCout&"&"&query&""" class="""&ListLink&""">처음 10페이지</a> "&Separator&"  ;"
종료하면
'현재 페이지 번호 세그먼트를 출력합니다.
i=MinPageNo에서 MaxPageNo까지
만약 i<=n이면
cstr(i)=cstr(현재 페이지)이면
response.write "<b>"&i&"</b>"&" "&Separator&" "
또 다른
response.write"<a href="""&url&"?page="&i&"&"&query&""">"&i&"</a> "&Separator&" "
종료하면
종료하면
다음
''다음 10페이지 | 마지막 페이지' 출력
CurrPageFiled>=MaxPageFiled인 경우
response.write"다음 10페이지 "&구분 기호&" "
또 다른
response.write"<a href="""&url&"?page="&MaxPageNo+1&"&"&query&""" class="""&ListLink&""">다음 10페이지</a> "&Separator&"   ;"
종료하면
현재페이지>=n이면
response.write"마지막 페이지 "
또 다른
response.write"<a href="""&url&"?page="&n&"&"&query&""" class="""&ListLink&""">마지막 페이지</a> "
종료하면
선택 종료
서브 끝
%>