반응형
-- 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=">"
PreviousText="<" />
-- 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@TotalCount int output
AS
BEGIN
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
반응형