public static class PageNumExt
{
///
/// 渡されたデリゲートを使用してわかりやすいページ番号を計算して生成します。
/// ///
///
番号
///
ページ番号の処理方法
///
折り畳まれたページの処理数値方法
///
隣接するページ番号の数
///
ページ番号の臨界値。この数を超えるページ番号は折りたたまれます。
public static void PageNumView(this object o,
long currentPage, PageNumAction actionPageNum, Action actionFolding,
long maxSiblings = 2) 、longPreventFolding = 1)
{
o.PageNumView(currentPage, actionPageNum, actionPageNum, actionFolding, maxSiblings,PreventFolding);
///
渡されたデリゲートを使用してわかりやすいページ番号を計算して生成します。現在のページ番号は特別に扱われます。
/// ///
///
番号
///
現在のページ番号の処理方法
///
ページ番号を処理するメソッド
///
折り畳まれたページ番号を処理する方法
///
閉じる ページ番号の数
///
この数を超えるページ番号は折りたたまれません 🎜>public static void PageNumView(this object o,
long currentPage, PageNumAction actionCurrent,
PageNumAction actionPageNum, Action actionFolding,
long maxSiblings = 2, longPreventFolding = 1)
{
o .PageNumView(
currentPage, actionCurrent,
1, long.MaxValue,
actionPageNum, i => { },
maxSiblings, actionPageNum,
preventFolding, actionFolding,
maxSiblings, 0 ,
actionPageNum, i => { }
)
///
/// 受信パラメータとデリゲートに基づいてわかりやすいページ番号を計算して生成します。 。現在のページ番号は特別に扱われます。
/// ///
///
番号
///
現在のページ番号の処理方法
///
開始ページ番号
///
デフォルトの終了ページ番号
///
ページ番号
///
折り畳まれたページ番号の処理方法
///
隣接するページ番号の数
///
この数を超えるページは折りたたまれます PageNumView(this object o,
long currentPage, PageNumAction actionCurrent,
long beginPage, long endPage,
PageNumAction actionPageNum, Action actionFolding,
long maxSiblings = 2, longPreventFolding = 1)
{
o.PageNumView(currentPage, actionCurrent, beginPage, endPage, actionPageNum, actionPageNum, actionPageNum, actionFolding, maxSiblings,PreventFolding);
///
// を計算します。渡されたパラメータとデリゲートに基づいてわかりやすいページ番号を生成します。現在のページ番号、開始ページ番号、および終了ページ番号はすべて、処理用の特別なデリゲートに割り当てられます。
/// ///
///
番号
///
現在のページ番号の処理方法
///
開始ページ番号
///
デフォルトの終了ページ番号
///
///
終了ページ番号の処理方法
///
隣接するページ番号の処理方法
///
折り畳まれたページ番号の処理方法
///
隣接するページ番号の数
///
ページ番号の折りたたみを防止する重要な値。この数を超えるページは折りたたまれますlong maxSiblings = 2、longPreventFolding = 1)
{
o.PageNumView(
currentPage, actionCurrent,
beginPage, endPage,
actionBegin, actionEnd,
maxSiblings, actionSebling ,
preventFolding, actionFolding,
maxSiblings, maxSiblings,
actionSebling, actionSebling
);
}
///
/// 受信したメッセージに従って分かりやすいページ番号を計算して生成するためのパラメーターとデリゲート。各ページ番号の特定の処理メソッドには、呼び出し元によって割り当てられたデリゲートが必要です。
///
///
///
番号
///
現在のページ番号の処理方法
///
開始ページ番号
///
デフォルトの終了ページ番号
///
///
終了ページ番号の処理方法
///
///
隣接するページ番号の処理方法 param name ="preventFolding">ページ番号の折り込みを禁止するしきい値。この数を超えるページは折り畳まれます
///
折り畳まれたページ番号の処理方法< ;/param> 隣接するページ番号の数
///
開始ページの隣接するページ番号の扱い
/// < ;param name=" actionEndSibling">終了ページ付近のページ番号の扱い方
public static void PageNumView(this object o,
long currentPage, PageNumAction actionCurrent,
long beginPage, long endPage、
PageNumAction actionBegin、PageNumAction actionEnd、
long currentSiblings、PageNumAction actionCurrentSibling、
longPreventFolding、Action actionFolding、
long endOfBegin、long beginOfEnd、
PageNumAction actionBeginSibling、PageNumAction actionEndSibling
)
{
long i = beginPage;
//開始ページが現在のページより小さい場合、開始ページの処理を開始します
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 = beginOfEnd -PreventFolding;
if (i
foldingStart) // 折り畳みの最後の行に触れずに、すぐに折り畳みを開始します
{
actionFolding();
i = beginOfEnd>}
else //すべてを現在のページとして扱います 隣接するページを処理しますが、終了ページの隣接するページは保持します
for (; i < beginOfEnd; i )
actionCurrentSibling(i);
for (; i < ; endPage; i )
actionEndSibling(i);
#endregion
}
ソースコードJavaScript バージョンのコードは先頭に直接配置できます。 上記のページをダウンロードしますが、ここにもリストします: