skymong9.egloos.com

Activation...

포토로그



[ASP.NET] 게시판 페이징 번호 처리 소스 my dev_study

출처 : http://xwing.tistory.com/36


일단, 소스부터 보자면..
[CPaging.cs]

using System;

using System.Text;

 

/// <summary>

/// auth. : ranos94@gmail.com

/// date  : 2007-12-01

/// desc. : 페이지 Navigation UI를 보여준다.

///   *퍼가실땐 출처를..*

/// copyright xwing.tistory.com

/// </summary>

public class CPaging : System.Web.UI.Page

{

    private int page;

    private int rowPerPage;

    private int totalRecord;

    private int totalPage;

    private int sPage;

    private int ePage;

    private string targetUrl = String.Empty;

    private string addParam = string.Empty;

 

    public PagingType pagingType;

 

    public enum PagingType

    {

        Numeric,

        PrevNext,

        BoxNumeric

    }

 

    public int PageNo

    {

        set { page = value; }

        get { return page;  }

    }

 

    public int RowPerPage

    {

        set { rowPerPage = value; }

        get { return rowPerPage; }

    }

 

    public int TotalRecord

    {

        set { totalRecord = value;}

        get { return totalPage; }

    }

 

    public int TotalPage

    {

        set { totalPage = value; }

        get { return totalPage; }

    }

 

    public string TargetURL

    {

        set { this.targetUrl = value; }

        get { return this.targetUrl; }

    }

 

    public string AddParam

    {

        set { this.addParam = value; }

        get { return this.addParam; }

    }

 

    public CPaging()

    {

        pagingType = PagingType.Numeric;

    }

 

    /// <summary>

    /// paging 에 필요한 변수를 설정하고, 페이지 렌더링함수를 호출한다.

    /// </summary>

    private void PagingInit()

    {

 

        if ((this.page % this.rowPerPage) == 0)

        {

            this.sPage = ((this.page / this.rowPerPage) * this.rowPerPage + 1) - this.rowPerPage;

            this.ePage = this.sPage + (this.rowPerPage - 1);

        }

        else

        {

            this.sPage = (this.page / this.rowPerPage) * this.rowPerPage + 1;

            this.ePage = this.sPage + (this.rowPerPage - 1);

        }

 

        if (this.ePage >= this.totalPage)

            this.ePage = this.totalPage;

    }

 

 

    /// <summary>

    /// Paging 을 그린다.

    /// </summary>

    public string RenderPaging()

    {

        PagingInit();

 

        switch (pagingType)

        {

            case PagingType.Numeric:

                return RenderNumeric();

 

            case PagingType.PrevNext:

                return RenderPrevNext();

 

            case PagingType.BoxNumeric:

                return RenderBoxNumeric();

 

            default:

                return RenderNumeric();

 

        }

 

    }

 

    /// <summary>

    /// 번호로 보여준다.

    /// </summary>

    /// <returns></returns>

    private string RenderNumeric()

    {

        StringBuilder sb = new StringBuilder();

        sb.Append("<table  border=0 align='center' cellpadding=0><tbody><tr>");

 

        if (this.sPage > this.rowPerPage)

        {

            int next10 = this.sPage - this.rowPerPage;

            sb.Append("<td width=80 align=\"center\" onMouseOver = \"onStyle(this)\" onMouseOut = \"offStyle(this)\">");

            sb.Append("<a href='" + targetUrl + "?page=" + next10.ToString() + "&" + AddParam + "'><< 이전10개</a></td>");

        }

 

        for (int i = sPage; i <= ePage; i++)

        {

            if (this.page == i)

            {

                sb.Append("<td width=25 align=\"center\" onMouseOver = \"onStyle(this)\" onMouseOut = \"offStyle(this)\" style=\"color:red;font-weight:bold\" >");

                sb.Append(i.ToString() + "</td>");

            }

            else

            {

                sb.Append("<td width=25 align=\"center\" onMouseOver = \"onStyle(this)\" onMouseOut = \"offStyle(this)\" style=\"font-weight:bold\">");

                sb.Append("<a href='" + targetUrl + "?page=" + i.ToString() + "&" + AddParam + "'>" + i.ToString() + "</a></td>");

            }

        }

 

        if (this.totalPage > this.ePage)

        {

            int next10 = this.sPage + this.rowPerPage;

            sb.Append("<td width=80 align=\"center\" onMouseOver = \"onStyle(this)\" onMouseOut = \"offStyle(this)\">");

            sb.Append("<a href='" + targetUrl + "?page=" + next10.ToString() + "&" + AddParam + "'>다음10개 >></a></td>");

        }

 

        sb.Append("</tr></tbody></table>");

 

        return sb.ToString();

    }

 

    /// <summary>

    /// Prev, Next 형식의 페이징을 만든다.

    /// </summary>

    /// <returns></returns>

    private string RenderPrevNext()

    {

        StringBuilder sb = new StringBuilder();

        sb.Append("<table  border=0 align='center' cellpadding=0><tbody><tr>");

 

        if (this.page > 1)

        {

            int prev = this.page - 1;

            sb.Append("<td width=80 align=\"center\" onMouseOver = \"onStyle(this)\" onMouseOut = \"offStyle(this)\">");

            sb.Append("<a href='" + targetUrl + "?page=" + prev.ToString() + "&" + AddParam + "'><img src='/images/board/icon_back.gif' border=0></a></td>");

        }

 

 

 

        if (this.totalPage > this.page)

        {

            int next = this.page + 1;

            sb.Append("<td width=80 align=\"center\" onMouseOver = \"onStyle(this)\" onMouseOut = \"offStyle(this)\">");

            sb.Append("<a href='" + targetUrl + "?page=" + next.ToString() + "&" + AddParam + "'><img src='/images/board/icon_next.gif' border=0></a></td>");

        }

 

        sb.Append("</tr></tbody></table>");

 

        return sb.ToString();

    }

 

    /// <summary>

    /// 사각형 형태의 모양을 보여준다.

    /// </summary>

    /// <returns></returns>

    private string RenderBoxNumeric()

    {

        StringBuilder sb = new StringBuilder();

        sb.Append("<table align='center' cellpadding=0 style=\"border:0; border-collapse:collapse;\"><tbody><tr>");

 

        if (this.sPage > this.rowPerPage)

        {

            int next10 = this.sPage - this.rowPerPage;

            sb.Append("<td width=80 align=\"center\" onMouseOver = \"onStyle(this)\" onMouseOut = \"offStyle(this)\">");

            sb.Append("<a href='" + targetUrl + "?page=" + next10.ToString() + "&" + AddParam + "'><< 이전10개</a></td>");

        }

 

        for (int i = sPage; i <= ePage; i++)

        {

            if (this.page == i)

            {

                sb.Append("<td width=25 align=\"center\"  style=\"color:red;background-color:#FFFFFF;border-color:#ACACEC;font-weight:bold;border:1px solid;\" >");

                sb.Append(i.ToString() + "</td>");

            }

            else

            {

                sb.Append("<td width=25 align=\"center\" onMouseOver = \"onStyle(this)\" onMouseOut = \"offStyle(this)\" style=\"font-weight:bold;border:0 solid;\" >");

                sb.Append("<a href='" + targetUrl + "?page=" + i.ToString() + "&" + AddParam + "'>" + i.ToString() + "</a></td>");

            }

        }

 

        if (this.totalPage > this.ePage)

        {

            int next10 = this.sPage + this.rowPerPage;

            sb.Append("<td width=80 align=\"center\" onMouseOver = \"onStyle(this)\" onMouseOut = \"offStyle(this)\">");

            sb.Append("<a href='" + targetUrl + "?page=" + next10.ToString() + "&" + AddParam + "'>다음10개 >></a></td>");

        }

 

        sb.Append("</tr></tbody></table>");

 

        return sb.ToString();

    }

}



그리고, 마우스오버에 필요한 Script

// JScript 파일
function onStyle(obj){
    obj.style.background = '#EFF2FE';
    obj.style.border='1px solid';
}

function offStyle(obj){
    obj.style.background = '#FFFFFF';
    obj.style.border = '0px';
}


실제 소스적용예를 보자!

CPaging paging = new CPaging();

paging.pagingType = CPaging.PagingType.PrevNext;

paging.TargetURL = "/board/dev/devInfo.aspx";

paging.PageNo = currentPage; //페이지번호

paging.RowPerPage = 10; //한페이지에 보여줄 row수

paging.AddParam = "p_type=" + p_type;

paging.TotalPage = Int32.Parse(param2.Value.ToString()); // 총 페이지수

paging.TotalRecord = Int32.Parse(param1.Value.ToString()); // 총 레코드수

 

string pageLayout = paging.RenderPaging();

PageLabel.Text = pageLayout;


이와 같이 사용한다.


덧글

  • 두바이 2016/06/11 19:06 # 삭제 답글

    과,중,한, ,스,트,레,스,와,
    우,울,증,.,,기,분,전,환,에, ,쎅,스,는, ,최고,죠,~,
    ,2,0,대, ,초,반, ,중,반, ,언,,니,,,들, ,2,4,시, 완,벽,준,비,~,!,!
    ,서,비,스,-,S,M노,예,/,컨,셥,놀,이,/,입사,/,질,사,,,/,안,,.,마,등,등,

    장,소,만, ,알,려,주,시,면, ,직,접, ,찾,아가,는, ,서,,비,스,~,
    ,착한 ,가,,,격,에 ,지,방,까,지, ,고,고,.,.,일,일,,대,,기 !~

    ,자,세,한, ,문,의는, ,톡,",d,.,u,,,b.,,a,,,,i,.,,8,8,8

    [,,1,9,금,], ,d,u,b,a,,i,3,5,.n,e,,,t

    ,상,담,환,영, ,친,절,히, ,답,해드,려,요,!,
    답,변,이, ,늦,을, ,수,있,는,점, ,양,해, ,부,탁,드,립,,니,다

    <img alt="dubai35.jpg" src="http://www.medwide.net/files/attach/images/67/352/337/009/f966e1834f9f2b3ea46d065fc3fd1085.jpg">


    모,,두,의,<,두,,,바,,,이,,,출,,장,샵> 입니다
    두,바,이,의, ,현재, ,주,소,는, ,d ,u, ,b ,a, ,i, ,3, ,5, ,. n ,e, t 입니다
    두,,바,,이,의, ,다,음, ,주,소,는, ,d, ,u, b, ,a, i 3 7 . n ,e, ,t 입니다
    그,러,타,면, ,그, ,다,음,주,소,는,?,?,
    d, ,u, b, ,a, i ,3 8 . n,, e,, t 입니다 ^^

    이,는, 추,후,에, ,저,희, ,사,이,트,가,, ,블,라,인,드, ,되,었을 경우
    뒤,에 숫,자,만, ,계,속, ,변,경,하,시,면, ,됩,니,다, ,,위,의, ,사,이,트,로, ,오,시,면
    정상적으로 사이트를 이용하실 수 있습니다
    틱,k,a,톡,:,d,.,u,,,b,.,a,,i.8,8,8 ♬
    트,위,터,로, ,오,시,면, 수,시,로,, 바,뀔, 수 있,는 저,희 사,,이,트의 실,,시,간,정,보,를
    보,실 ,수 ,있,습,니,다,.
  • 코코킹 2016/11/06 16:53 # 삭제 답글

    짜. 릿. 한 만. 남~ 오 . 늘 . 밤 만. 나 볼까요??????
    도신닷컴소라넷밍키넷코코킹짜릿한.만.남.

    매일 매일 같은 섹.파가 지 겨 우 세요??
    그럼 지금 바로 새로운 섹. 파를 찾아서 떠나볼까요?
    대한민국 섹.파 검색, 스 와 핑, 초. 대. 남, 성. 인 만. 남을 무. 료로 할 수 있는곳~!!!

    구글 검색창에서 "코 코 킹"을 검색하세요~!!
    무/료/ 공/짜 성/인들의 만/남을 연결해 드립니다.


    주소1: http://q.gs/AN6Sl
    주소2: http://q.gs/AN6Sl
댓글 입력 영역