사실 AJAX는 단순히 JS를 작성한다고 해서 얻을 수 있는 것이 아니므로, 프로그래밍 경험이 있어야 합니다. 그렇지 않으면 작성하더라도 아이디어가 명확하지 않고 만들고 싶을 때 어디서부터 시작해야 할지 알 수 없습니다. .그래서 객체지향 프로그래밍을 잠깐 접하고 나니 AJAX를 잘하기가 정말 쉽지 않다는 생각이 들었습니다. 제가 ASP 페이징 튜토리얼을 작성할 때 왜 AJAX를 언급했습니까? 프로그래밍 과정에서 구조의 중요성에 대해 더 많이 연습하세요.
게다가 페이징에 대해 깊은 감정을 갖고 있는 친구들이 많아 감히 건드릴 엄두가 나지 않습니다. 다른 사람이 작성한 컴포넌트를 사용하거나, 특히 .net의 경우 개발할 때 빨리 하고 싶다는 생각이 듭니다. 하지만 저는 .net이 매우 훌륭한 플랫폼이라고 생각합니다. 통제가 심하기 때문에 초보자는 프로그래밍에 대한 아이디어를 얻을 수 없으며 마치 블록을 쌓는 것처럼 프로그래밍의 느낌을 전혀 찾을 수 없습니다. 개선될 수 있습니다. 저는 .NET만 사용할 수 있는 어셈블러가 되고 싶지 않습니다.
좋아요, 여기에 모든 사람을 위한 ASP 페이징의 소스 코드가 자세히 설명되어 있으며 일반적으로 이해할 수 있습니다.
이것은 튜토리얼 1이므로 가장 간단한 것부터 시작하겠습니다. AbsolutePage를 사용하여 현재 페이지를 정의하므로 MoveFirst와 같은 복잡한 커서 메서드를 사용하지 않고 페이징을 위해 드롭다운 선택 상자도 사용합니다. 다음 튜토리얼을 기다리겠습니다. 10페이지 앞으로 이동하고 10페이지 뒤로 이동하며 현재 10페이지 그룹만 표시하는 방법을 제공하는 또 다른 고급 페이징 방법을 작성하겠습니다.
ASP는 낡았지만 JS를 사용하여 작성할 수 있기 때문에 프로젝트 DEMO를 할 때 거대한 환경을 설치할 필요가 없기 때문에 .NET이나 JAVA보다 ASP를 사용하는 것이 더 편리하다고 느낍니다. . 정말 대규모 프로젝트를 개발해야 한다면 효율성 문제가 발생하기 때문에 반드시 .NET이나 JAVA를 사용하겠습니다.
다음과 같이 코드 코드를 복사합니다.
<%@LANGUAGE=JAVASCRIPT 코드페이지=936%>
<%
//데이터베이스 연결문 정의
var connstring = 공급자=Microsoft.Jet.OLEDB.4.0;데이터 소스=
+Server.MapPath(데이터베이스/vote.mdb);
//rs 데이터베이스 쿼리 생성
var rs = Server.CreateObject(ADODB.Recordset)
//rs 연결 방법
rs.ActiveConnection = 연결 문자열
//rs 쿼리문(사용자 제출 시간의 역순으로 쿼리)
rs.Source = 사용 시간별 사용자 순서에서 * 선택 DESC
//데이터베이스 쿼리 모드 정의
rs.CursorType = 3
rs.CursorLocation = 3
rs.LockType = 1
//각 페이지에 표시되는 데이터의 양을 정의합니다.
rs.페이지 크기 = 10
//데이터베이스 연결 열기
RS.열기()
//데이터베이스 레코드의 총 개수, 총 페이지 개수, URL 경로를 정의합니다.
var 개수,pagecos,thisUrl
개수 = rs.RecordCount
pagecos = rs.PageCount
thisUrl = Request.ServerVariables(URL)
//커서가 테이블에 있으면 실행
if(!rs.EOF || !rs.BOF){
//url의 페이지 매개변수가 비어 있지 않으면 실행
if(요청(페이지).Count != 0){
//기본 링크 문자열, 첫 페이지, 마지막 페이지, 이전 페이지, 다음 페이지를 정의합니다.
//URL(지정된 현재 페이지)의 페이지 값, 현재 페이지, 각 페이지에 표시되는 현재 데이터 수
var defaltStr,firstpage,lastpage,prepage,nextpage,pages,nowPage,nowSize
defaltStr = '<a href='+thisUrl+'?page='
firstpage = defaltStr+'1>홈페이지</a>'
lastpage = defaltStr+pagecos+'>마지막 페이지</a>'
페이지 = 요청(페이지)
//첫 번째 페이지에 있는 경우
//홈페이지, 이전페이지는 링크가 아닙니다
if(페이지 <= 1){
rs.AbsolutePage = 1;
첫 페이지 = '홈페이지'
prepage = '이전 페이지'
nextpage = defaltStr+'2>다음 페이지</a>'
//마지막 페이지에 있는 경우
//마지막 페이지, 다음 페이지는 링크가 아닙니다
}else if(페이지 >= pagecos){
rs.AbsolutePage = 페이지코스;
prepage = defaltStr+(pagecos-1)+'>이전 페이지</a>'
lastpage = '마지막 페이지'
nextpage = '다음 페이지'
}또 다른{
rs.AbsolutePage = 페이지
prepage = defaltStr+(Number(pages)-1)+'>이전 페이지</a>'
nextpage = defaltStr+(Number(pages)+1)+'>다음 페이지</a>'
}
}
nowPage = rs.AbsolutePage
지금 크기 = rs.PageSize
//마지막 페이지에 표시되는 데이터 수가 각 페이지에 표시되는 데이터 수와 같지 않은 경우
//마지막 페이지는 매번 각 페이지에 표시되는 데이터의 양과 정확히 같을 수 없기 때문입니다.
//따라서 같지 않은 메소드를 정의해야 합니다.
if(nowPage >= pagecos && (pagecos*rs.PageSize)%counts != 0){
nowSize = 개수%rs.PageSize
}
%>
<테이블 너비=100% 테두리=0 셀 간격=0 셀 패딩=0 클래스=사용자 정보>
<tr>
<td 정렬=가운데>
<!--홈페이지, 이전페이지 표시-->
<%=첫 번째 페이지%> <%=사전 페이지%>
<select onchange=location.href='<%=thisUrl%>?page='+this.value>로 이동
<%
//페이징은 루프 표시에 의존합니다.
for(var num=1; num<=pagecos; num++){
if(nowPage == num){
%>
<옵션 값=<%=num%> 선택됨=선택됨><%=num%></option>
<%
}또 다른{
%>
<옵션 값=<%=num%>><%=num%></option>
<%
}
}
%>
</select> 페이지
<!--다음 페이지, 마지막 페이지 표시-->
<%=다음 페이지%> <%=마지막 페이지%>
<!--현재 페이지 번호, 총 페이지 수, 총 레코드 수, 각 페이지에 표시되는 데이터 수를 표시합니다-->
총 <%=nowPage%> / <%=pagecos%> 페이지<%=counts%> / <%=rs.PageSize%> 레코드
</td>
</tr>
<%
//내용이 루프로 표시됩니다.
for(var i=1;i<=nowSize;i++){
%>
<tr>
<td><span>사용자 IP:</span><%=rs(usip)%></td>
</tr>
<tr>
<td><span>제안:</span><%=rs(us1)%></td>
</tr>
<tr>
<td><span>제출 시간:</span><%=rs(usetime)%></td>
</tr>
<%
//데이터베이스 커서가 다음 레코드로 이동합니다.
rs.MoveNext();
}
%>
</table>
<%
//데이터베이스 커서가 데이터베이스 컬럼에 없는 경우
}또 다른{
응답.쓰기(사용자 정보가 없습니다!)
}
//데이터베이스 연결 닫기
RS.닫기()
%>