ASP 페이징 기능, 페이징 탐색
저자:Eve Cole
업데이트 시간:2009-06-26 18:09:37
프로그램 코드
<%
'//페이징 함수
'//psize: 각 페이지에 표시되는 데이터 수
'//pindex: 현재 페이지 번호
'//tbName: 테이블 이름
'//keyIndex: 어떤 필드에 따른 페이징, 일반적으로 자체 증가 유형(액세스 데이터베이스의 자동 번호 매기기)
'//어디:쿼리 조건
'//order: 정렬 조건, 기본값은 " &keyIndex &" desc 기준으로 정렬"
'//총 레코드 수와 총 페이지 수는 반환된 결과 집합에서 직접 얻을 수 있습니다. datacount 필드는 총 레코드 수를 저장하고, pagecount 필드는 총 페이지 수를 저장합니다.
비공개 핀 인덱스, 데이터 개수, 페이지
'데이터 개수 = 0
'페이지 = 1
공용 함수 변경 페이지(psize,tbName,keyIndex,where,order)
희미한 문자열
pindex = Trim(Request.QueryString("페이지"))
isnumeric(psize) 또는 psize=""가 아닌 경우 psize=1'//각 페이지에 표시되는 데이터 수
isnumeric(pindex) 또는 pindex=""가 아닌 경우 pindex=1'//현재 페이지 번호
order=""인 경우 order=" " & keyIndex & " desc"로 주문
'//전체 데이터 개수를 구한다
'어두운 데이터 수, 페이지
set rs=conn.execute("select count(*) as datacount from " & tbName & " where 1=1 " & where)
datacount = rs("datacount")'//총 레코드 수
RS.닫기
rs=아무것도 설정하지 않음
'//전체 페이지 수를 계산합니다.
(datacount mod psize)=0이면
페이지=데이터 개수 psize
또 다른
페이지=데이터 개수 psize + 1
종료하면
'//
cint(pindex)>페이지인 경우 pindex=페이지
'SQL 문자열 연결
pindex<=1이면
sqlstring="select top " & psize & " *," & datacount & "를 datacount로," & 페이지 & "를 " &_의 페이지 수로
tbName & " where 1=1 " & where & " " & 순서
또 다른
sqlstring="select top " & psize & " *," & datacount & "를 datacount로," & 페이지 & "를 " &_의 페이지 수로
tbName & " 여기서 1=1이고 " & keyIndex & "가 아님(top " & (pindex-1)*psize & " " & keyIndex & " from " &_ 선택)
tbName & " where 1=1 " & where & " " & order & ") " & where & " " & order
종료하면
'응답.쓰기(sqlstring)
변경페이지=conn.execute(sqlstring) 설정
함수 종료
'//페이지 탐색
'//파일명: 파일명/현재 페이지, 비워두셔도 됩니다.
'//argString: classid=1&tid=16과 같은 페이징 매개변수, 페이징에 필요한 매개변수 페이지를 채울 필요가 없습니다.
'//pindex: 현재 페이지 번호
'//datacount: 총 레코드 수
'//pages: 총 페이지 수
'//showMsg: 페이징 정보 표시 여부, 매개변수는 true/false입니다.
'//showText: 홈 페이지, 이전 페이지, 다음 페이지, 마지막 페이지의 탐색을 표시할지 여부, 매개변수는 true/false입니다.
'//showNumber: 디지털 페이징 탐색을 표시할지 여부, 매개변수는 true/false입니다.
'공용 함수 pageLink(fileName,argString,pindex,datacount,pages,showMsg,showText,showNumber)
공용 함수 pageLink(fileName,argString,showMsg,showText,showNumber)
'//
if argString<>"" then argString = argString & "&"
showText도 아니고 showNumber도 아닌 경우 showText=true
'//
showMsg이면
응답.쓰기("[")
Response.Write("<span style='color:red;'>" & pindex & "</span> 페이지")
Response.Write("/分<span style='color:red;'>" & 페이지 & "</span> 페이지")
Response.Write("/Total<span style='color:red;'>" & 데이터 개수 & "</span> 레코드")
응답.쓰기("] ")
종료하면
'//
showText라면
pindex>1이면
Response.Write("<a href='" & fileName & "?" & argString & "page=1'>[홈]</a>")
응답.쓰기(" ")
Response.Write("<a href='" & fileName & "?" & argString & "page=" & pindex - 1 & "'>[이전 페이지]</a>")
또 다른
Response.Write("[홈]")
응답.쓰기(" ")
Response.Write("[이전 페이지]")
종료하면
응답.쓰기(" ")
if pindex<페이지 다음
Response.Write("<a href='" & fileName & "?" & argString & "page=" & pindex + 1 & "'>[다음 페이지]</a>")
응답.쓰기(" ")
Response.Write("<a href='" & fileName & "?" & argString & "page=" & 페이지 & "'>[마지막 페이지]</a>")
또 다른
Response.Write("[다음 페이지]")
응답.쓰기(" ")
Response.Write("[마지막 페이지]")
종료하면
종료하면
'//
showNumber이면
응답.쓰기(" ")
i = 4 ~ 1 단계 -1의 경우
(pindex - i)>0이면
Response.Write("<a href='" & fileName & "?" & argString & "page=" & pindex - i & "'>" & pindex - i & "</a>")
응답.쓰기(" ")
종료하면
다음
'//
Response.Write("<span style='color:red;'>" & pindex & "</span>")
'//
i = 1에서 4까지
if (pindex + i)<=페이지 then
응답.쓰기(" ")
Response.Write("<a href='" & fileName & "?" & argString & "page=" & pindex + i & "'>" & pindex + i & "</a>")
종료하면
다음
'//
종료하면
'//
함수 종료
%>