public static class PageNumExt
{
///
/// 전달된 대리자를 사용하여 친숙한 페이지 번호를 계산하고 생성합니다.
/// ///
///
현재 페이지 number ///
페이지 번호 처리 방법
///
접힌 페이지 처리 숫자 방식
///
인접 페이지 번호 수
///
접기 방지 이 숫자를 초과하는 페이지 번호는 접혀집니다
public static void PageNumView(this object o,
long currentPage, PageNumAction actionPageNum, Action actionFolding,
long maxSiblings = 2 , long 막기Folding = 1)
{
o.PageNumView(currentPage, actionPageNum, actionPageNum, actionFolding, maxSiblings, 막기Folding)
///
전달된 대리자를 사용하여 친숙한 페이지 번호를 계산하고 생성합니다. 현재 페이지 번호는 특별하게 처리됩니다.
/// ///
///
현재 페이지 number
///
현재 페이지 번호 처리 방법
///
방법 페이지 번호 처리 방법
///
접힌 페이지 번호 처리 방법
///
닫기 페이지 번호
///
이 번호를 초과하는 페이지 번호가 접히는 것을 방지하는 임계값입니다 🎜>public static void PageNumView(이 개체 o,
long currentPage, PageNumAction actionCurrent,
PageNumAction actionPageNum, Action actionFolding,
long maxSiblings = 2, long PreventFolding = 1)
{
o .PageNumView(
currentPage, actionCurrent,
1, long.MaxValue,
actionPageNum, i => { },
maxSiblings, actionPageNum,
preventFolding, actionFolding,
maxSiblings, 0 ,
actionPageNum, i => { }
)
}
///
. 현재 페이지 번호는 특별하게 처리됩니다.
/// ///
///
현재 페이지 number ///
현재 페이지 번호 처리 방법
///
Default 시작 페이지 번호///
기본 끝 페이지 번호
///
처리 방법 페이지 번호
///
접힌 페이지 번호 처리 방법
///
번호 인접 페이지 번호
///
이 숫자를 초과하는 페이지는 접혀집니다. public static void PageNumView(이 개체 o,
long currentPage, PageNumAction actionCurrent,
long startPage, long endPage,
PageNumAction actionPageNum, Action actionFolding,
long maxSiblings = 2, long PreventFolding = 1)
{
o.PageNumView(currentPage, actionCurrent, BeginPage, endPage, actionPageNum, actionPageNum, actionPageNum, actionFolding, maxSiblings, PreventFolding)
}
///
전달된 매개변수와 대리자를 기반으로 친숙한 페이지 번호를 생성합니다. 현재 페이지 번호, 시작 페이지 번호 및 끝 페이지 번호는 모두 처리를 위해 할당된 특별 대리인입니다.
/// ///
///
현재 페이지 number ///
현재 페이지 번호 처리 방법
///
Default 시작 페이지 번호///
기본 끝 페이지 번호
///
처리 방법 시작 페이지 번호
///
끝 페이지 번호 처리 방법
///
인접 페이지 번호 처리 방법
///
접힌 페이지 번호 처리 방법
///
인접 페이지 번호 수
///
페이지 번호 접힘을 방지하는 임계값입니다. 이 숫자를 초과하는 페이지는 접혀집니다 매개변수
long maxSiblings = 2, long PreventFolding = 1)
{
o.PageNumView(
currentPage, actionCurrent,
beginPage, endPage,
actionBegin, actionEnd,
maxSiblings, actionSebling ,
preventFolding, actionFolding,
maxSiblings, maxSiblings,
actionSebling, actionSebling
)
}
///
/// 친숙한 페이지 번호를 계산하고 생성하는 매개변수 및 대리자입니다. 각 페이지 번호의 구체적인 처리 방법에는 발신자가 할당한 대리인이 필요합니다.
/// ///
///
현재 페이지 number ///
현재 페이지 번호 처리 방법
///
Default 시작 페이지 번호///
기본 끝 페이지 번호
///
처리 방법 시작 페이지 번호
///
끝 페이지 번호 처리 방법
///
현재 페이지 번호의 인접 페이지 번호
///
인접 페이지 번호 처리 방법 param name ="preventFolding">페이지 번호 접기를 방지하는 임계값입니다. 이 숫자를 초과하는 페이지는 접혀집니다.
///
접힌 페이지 번호 처리 방법< ;/param> 인접 페이지 번호
///
시작 페이지의 인접 페이지 번호 처리 방법 ;param name=" actionEndSibling">끝 페이지 근처의 페이지 번호를 처리하는 방법
public static void PageNumView(this object o,
long currentPage, PageNumAction actionCurrent,
long startPage, long endPage,
PageNumAction actionBegin, PageNumAction actionEnd,
long currentSiblings, PageNumAction actionCurrentSibling,
long PreventFolding, Action actionFolding,
long endOfBegin, long startOfEnd,
PageNumAction actionBeginSibling, PageNumAction actionEndSibling
)
{
long i = startPage;
//시작 페이지가 현재 페이지보다 작으면 시작 페이지 처리를 시작합니다
if (beginPage < currentPage)
#region
{
actionBegin(beginPage ; = siblingBegin - PreventFolding; // 페이지 번호 접기의 맨 아래 줄
if (endOfBegin > siblingBegin)
endOfBegin = siblingBegin; // 현재 페이지의 인접 페이지 확인 , 시작 페이지의 인접한 페이지를 희생합니다
for (; i < endOfBegin; i )
actionBeginSibling(i)
if (i < 도달하면 즉시 접기 시작
{
actionFolding();
i =foldingStart 1; // 접은 후 페이지 번호로 이동
}
}
#endregion
/ / 현재 페이지 이전의 인접 페이지 처리
for (; i < currentPage ; i )
actionCurrentSibling(i)
// 현재 페이지 처리
actionCurrent(currentPage); i = currentPage 1; // 현재 페이지가 처리되었음을 나타냅니다.
// 현재 페이지와 원하는 시작 페이지의 관계를 보장할 수 없으므로 현재 페이지부터 계산이 시작됩니다.
var goal = i currentSiblings; // 목표 설정
if (goal > endPage) // 목표는 종료 페이지를 초과하면 안 됩니다.
goal = endPage>// 이후 근접 처리 대상 페이지에 도달할 때까지 현재 페이지 페이지
for (; i actionCurrentSibling(i)
// 끝 페이지가 현재 페이지보다 크면 끝 처리를 시작합니다. page
if ( endPage > currentPage)
#region
{
beginOfEnd = endPage - BeginOfEnd; // 끝 페이지의 인접한 페이지가 시작되는 위치 계산
varfoldingStart = startOfEnd - PreventFolding;
if (i
{
actionFolding()
i = startOfEnd
}
else // 모든 것을 현재 페이지로 처리합니다. 인접한 페이지를 처리하지만 마지막 페이지의 인접한 페이지는 유지합니다.
for (; i < startOfEnd; i )
actionCurrentSibling(i);
for (; i < ; endPage; i )
actionEndSibling(i);
actionEnd(endPage);
#endregion
}
} 소스 코드 JavaScript 버전은 맨 앞에 직접 있을 수 있습니다. 언급된 페이지를 다운로드하고 여기에도 나열하세요.