質問

Stackoverflowページャーによく似た、ASP.NETの適切なページングコントロールを探しています。誰でも推薦できますか?

Postbackも使用せず、カスタマイズ可能なクエリ文字列のみを使用したいです。

役に立ちましたか?

他のヒント

自分でロールバックするのはとても簡単です。スタックオーバーフローページャーに基づいて、2つのプロパティを持つ単純なユーザーコントロールを作成しました...

  1. 基礎となるデータに応じて利用可能なページの合計数
  2. 表示するリンクの数

選択されたページは、クエリ文字列を読み取ることによって決定されます。最大の課題は、新しいページ番号でURLを変更することでした。このメソッドは、クエリ文字列パラメーター「p」を使用して、表示するページを指定します...

string getLink(int toPage)
{
    NameValueCollection query = HttpUtility.ParseQueryString(Request.Url.Query);
    query["p"] = toPage.ToString();

    string url = Request.Path;

    for(int i = 0; i < query.Count; i++)
    {
        url += string.Format("{0}{1}={2}", 
            i == 0 ? "?" : "&", 
            query.Keys[i], 
            string.Join(",", query.GetValues(i)));
    }

    return url;
}

表示するページ番号の範囲を決定する簡単な式...

int min = Math.Min(Math.Max(0, Selected - (PageLinksToShow / 2)), Math.Max(0, PageCount - PageLinksToShow + 1));
int max = Math.Min(PageCount, min + PageLinksToShow);

各リンクは次のようなものを使用して生成されます(minとmaxは作成するページリンクの範囲を指定します)...

for (int i = min; i <= max; i++)
{
    HyperLink btn = new HyperLink();
    btn.Text = (i + 1).ToString();
    btn.NavigateUrl = getLink(i);
    btn.CssClass = "pageNumbers" + (Selected == i ? " current" : string.Empty);
    this.Controls.Add(btn);
}

「前へ」(および「次へ」)ボタンを作成することもできます...

HyperLink previous = new HyperLink();
previous.Text = "Previous";
previous.NavigateUrl = getLink(Selected - 1);

最初と最後のボタンは簡単です...

HyperLink previous = new HyperLink();
previous.Text = "1";
first.NavigateUrl = getLink(0);

<!> quot; ... <!> quot;を表示するタイミングを決定する際に、リンク範囲が最初または最後のページの隣にない場合にリテラルコントロールを表示します...

if (min > 0)
{
    Literal spacer = new Literal();
    spacer.Text = "&hellip;";
    this.Controls.Add(spacer);
}

<!> quot; max <!> lt;についても上記と同じことを行います。 PageCount <!> quot;。

このコードはすべて、CreateChildControlsのオーバーライドメソッドに配置されます。

私はDevExpressおよびTelerikページコントロールを使用しましたが、DevExpressページャーを好みます。 DevExpressページャーがクエリ文字列を直接操作できるかどうかは わかりませんが、非常に柔軟なので、そうしなかった場合は驚くでしょう。ダウンロード後の既存のページ間のページングに関しては、すべてがクライアント上に常駐できます。サーバーへの旅行が必要な場合、コントロールは完全にAJAXを備えています。 www.devexpress.comで検索を開始してから、www.Telerik.comもチェックアウトすることをお勧めします(AJAXも装備されています)。

Flexy Pagerという名前のページャーコントロールを作成しました
詳細: http://www.codeproject .com / Articles / 748270 / Flexy-Pager-for-ASP-NET-WebForm-MVC

ここに画像の説明を入力

NPager を試すことができます。ポストバックなしで、ページインデックスにクエリ文字列を使用します。スタイル設定にはBootstrapが必要ですが、 'pagination' CSSクラスを使用して、コントロール用に独自のカスタムcssクラスを使用できます。 nofollow noreferrer ">デモ

ここに画像の説明を入力してください

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top