반응형

-- Aspx
<%@ Register TagPrefix="cc1" Namespace="RashidPager" %>   // 네임스페이스 등록


<cc1:Pager ID="PagerMyCase"
                  runat="server"
                  OnPageChange="PagerMyCase_PageChange"
                  SliderSize="5"
                  ShowFirstAndLast="false"
                  ShowPreviousAndNext="true" 
                  ShowInfo="True"
                  RowPerPage="10" 
                  CurrentPageCssClass="paging_current"
                  OtherPageCssClass="paging_other"
                  ShowTip="false"
                  HideOnSinglePage="false"
                  NextText="&gt"
                  PreviousText="&lt"  />


-- CS
using RashidPager;

<Data Bind>
// 페이지당 행의 수
db.AddInParameter(dbCmd, "@PageSize", DbType.Int16, PagerSubmittedCase.RowPerPage);  
// 현재 페이지 Number
db.AddInParameter(dbCmd, "@CurrentPage", DbType.Int16, PagerSubmittedCase.CurrentPageNo);
// 총 데이터 수(return value)
db.AddOutParameter(dbCmd, "@TotalCount", DbType.String, 5);

// 총 데이터 수를 Pager 클래스의 TotalRow의 변수에 값을 배정한다
PagerSubmittedCase.TotalRow = Convert.ToInt32(db.GetParameterValue(dbCmd, "@TotalCount"));


// 페이지 Change 이벤트 설정
// 페이지 번호나 Next, Previous가 클릭될때 이벤트가 발생한다.
protected void PagerSubmittedCase_PageChange(object sender, PageChangeEventArgs e)
{
     ((Pager)sender).CurrentPageNo = e.PageNo;
     Submitted_DataBind();
}


-- Database
CREATE PROC ProcName
    @PageSize        tinyint    = 10,
    @CurrentPage    int    = 1,
    @TotalCount        int output
AS
BEGIN
    SET NOCOUNT ON
   
    DECLARE    @UpperBand    int
    DECLARE    @LowerBand    int
   
    SET @UpperBand = ((@CurrentPage - 1) * @PageSize) + 1
    SET @LowerBand = @CurrentPage * @PageSize

    -- Row Number가 추가된 임시 테이블 생성
     ;WITH tempTable AS (
        SELECT        컬럼들,  Row_Number() OVER (ORDER BY 정렬기준 컬럼 DESC) AS RowNum
        FROM           테이블명
        WHERE         조건절
    )

    -- 데이터 Select
    SELECT    컬럼들
    FROM       tempTable
    WHERE     RowNum BETWEEN     @UpperBand AND @LowerBand
   
    -- Total Count
    SELECT        @TotalCount = Count(*)
    FROM           테이블명
    WHERE         조건절
END

반응형

+ Recent posts