티스토리 뷰

지금 사용하고 있는 페이징 소스이다.


<%

' ------------------------------------------------------------------------------------

' 설  명 : 페이징처리가 있는부눈에서 사용

' 일반형 : Call GoToPageHTMLPaging(Pageparam, GotoPage, TotalPageCount)

' 예  제 : Call GoToPageHTMLPaging(넘길파라미터, 페이지번호, 총페이지수)

' ------------------------------------------------------------------------------------

Sub GoToPageHTMLPaging(PageParam, Page, PageCount)

Dim BlockPage, i, PageName

BlockPage = Int((page-1)/10)*10+1

PageName = Request.ServerVariables("URL")


If Pagecount > 0 Then

Response.Write "<div class=""paging"">" & vbCrLf

Response.Write " <table>" & vbCrLf

Response.Write " <tr>" & vbCrLf


'********** 처음/이전10개 **********

Response.Write " <td>" & vbCrLf

If blockPage = 1 Then

Response.Write " <a href=""javascript: ;""><img src=""/images/btn_paging_prev.gif"" alt=""이전""></a>" & vbCrLf

Else

Response.Write " <a href="""&Pagename&"?GotoPage="&blockPage-1&"&"&Pageparam&"""><img src=""/images/btn_paging_prev.gif"" alt=""이전""></a>" & vbCrLf

End If

Response.Write " </td>" & vbCrLf

'********** //처음/이전10개 **********


'********** 페이지 **********

Response.Write " <td>" & vbCrLf

Response.Write " <ol>" & vbCrLf

i = 1

Do Until i > 10 Or blockpage > Pagecount

If blockpage = Int(page) Then

Response.Write " <li><span class=""on"">"&blockPage&"</span></li>" & vbCrLf

Else

Response.Write " <li><a href="""&Pagename&"?GotoPage="&blockpage&"&"&Pageparam&""">"&BlockPage&"</a></li>" & vbCrLf

End If


blockpage = blockpage+1

i = i + 1

Loop

Response.Write " </ol>" & vbCrLf

Response.Write " </td>" & vbCrLf

'********** //페이지 **********


'********** 다음/마지막 **********

Response.Write " <td>" & vbCrLf

If blockpage > Pagecount Then

Response.Write " <a href=""javascript: ;""><img src=""/images/btn_paging_next.gif"" alt=""다음""></a>" & vbCrLf

Else

Response.Write " <a href="""&Pagename&"?GotoPage="&blockpage&"&"&Pageparam&"""><img src=""/images/btn_paging_next.gif"" alt=""다음""></a>" & vbCrLf

End If

Response.Write " </td>" & vbCrLf

'********** //다음/마지막 **********


Response.Write " </tr>" & vbCrLf

Response.Write " </table>" & vbCrLf

Response.Write "</div>" & vbCrLf

Else

Response.Write "<div class=""paging"">" & vbCrLf

Response.Write " <table>" & vbCrLf

Response.Write " <tr>" & vbCrLf


Response.Write " <td>" & vbCrLf

Response.Write " <a href=""javascript: ;""><img src=""/images/btn_paging_prev.gif"" alt=""이전""></a>" & vbCrLf

Response.Write " </td>" & vbCrLf


Response.Write " <td>" & vbCrLf

Response.Write " <ol>" & vbCrLf

Response.Write " <li><span class=""on"">1</span></li>" & vbCrLf

Response.Write " </ol>" & vbCrLf

Response.Write " </td>" & vbCrLf


Response.Write " <td>" & vbCrLf

Response.Write " <a href=""javascript: ;""><img src=""/images/btn_paging_next.gif"" alt=""다음""></a>" & vbCrLf

Response.Write " </td>" & vbCrLf


Response.Write " <tr>" & vbCrLf

Response.Write " <table>" & vbCrLf

Response.Write "</div>" & vbCrLf

End If

End Sub


%>

이렇게 sub를 만들고.


<% Call GoToPageHTMLPaging(Pageparam, GotoPage, TotalPageCount) %>

이렇게 불러서 쓰자.


첫번째 인자는 파라미터

1,2,3... 페이지를 눌렀을때 만일 검색한 내용이 있다면 항상 페이지마다 가지고 다녀야지 되기 때문에.

Pageparam = "searchStartDate="&searchStartDate&"&searchEndDate="&searchEndDate&"&searchArea="&searchArea&"&searchSubjet="&searchSubjet&"&searchCategory="&searchCategory&"&searchWord="&searchWord


두번째 인자는 몇번째 페이지로 갈 것인가


세번째는 총 페이지수



페이징은 두개의 조합이 중요하다.

하나는 페이지 번호를 만들어서 뿌리는 부분과, 값을 보냈을때 잘 받는 방법


변수명을 어느정도 통일해서 보내는 것이 깔끔함, 왜냐면 나중에 잊어버릴까봐.

두번째 인자에서 몇번째 페이지로 갈 것인가? 라는 부분이 

' ########## 페이징세팅

PageSize = 20

GotoPage = Request("GotoPage")

If IsNull(GotoPage) Or GotoPage = "" Then GotoPage = 1

이렇게 했을때 정리가 된다.

GotoPage라는 놈은 내가 몇번째 페이지로 갈 것인가 라는 것이고 그걸 받아서 처리하는 놈은 그냥 Page라고 받아서 처리한다.

세번째 인자도 TotalPageCount 라고 보내고 받을때에는 PageCount라고 받는다.


마구마구 만들어도 상관없지만 비슷한 기능을 하거나, 이놈하고 이놈은 이걸 받아서 처리할때 사용한다 하면 비슷한 이름으로 가는게 나중에 헤깔리지 않고 사용할 수 있다.


또한 페이지를 만들때에는

뭔가 내용이 있어야지 페이지를 만들지~ 한다.


따라서 DB와의 연동이 중요하다.

이건 나중에 쓸것이고 일단 페이징을 처리하는 부분은.



1. 페이지세팅



2. 다음페이지로 넘겼을때 파라미터


3. 페이징 소스 호출



4. 페이징 소스



이런 방식으로 구현됨