2009-03-16 13 views
14

Szukam przyzwoitej kontroli stronicowania w ASP.NET, podobnie jak pager Stackoverflow. Czy ktoś może polecić?Kontrola stronicowania ASP.NET

Wolałbym taki, który nie korzystał z funkcji odświeżania zwrotnego, po prostu konfigurowalny querystring.

Odpowiedz

4

Spodziewałem się więcej odpowiedzi, ale wygląda na to, że wiele osób po prostu tworzy własne. Znalazłem przyzwoity jeden, który utrzymuje się dość często na codeproject.com

cp

to nie jest zupełnie taka sama jak stackoverflow.com jednym.Byłoby miło, gdyby istniała przyzwoita kontrola open source, która miała wiele różnych opcji wyjściowych.

2

Pracowałem z kontrolkami strony DevExpress i Telerik i wolę pager DevExpress. Nie jestem pewnie, jeśli pager DevExpress może pracować bezpośrednio z querystringiem, ale byłbym zaskoczony, gdyby nie, ponieważ jest bardzo elastyczny. Jeśli chodzi o stronicowanie między istniejącymi stronami po pobraniu, wszystko może znajdować się na kliencie lub, jeśli wycieczka na serwer jest konieczna, kontrola jest w pełni wyposażona w AJAX. Proponuję rozpocząć wyszukiwanie na stronie www.devexpress.com, a następnie sprawdzić stronę www.Telerik.com (która jest również wyposażona w AJAX).

2

Nie kontrola, ale to jest droga do wdrożenia stronicowania na poziomie DB: SQL Server 2005 Paging

+0

jestem po kontroli :) –

+0

Dzięki za downvote . Biorąc pod uwagę wiek pytania i brak komentarza, założę się, że jest to zła zemsta niezwiązana z rzeczywistą odpowiedzią. –

+0

Nie głosowałem, ostatni raz przegłosowałem na październik –

11

Jest to dość łatwy do toczyć własną rękę. Stworzyłem prostą kontrolę użytkownika opartego na pager przepełnienie stosu z dwóch właściwości ...

  1. Łączna liczba stron dostępnych na podstawie danych bazowych
  2. Ilość linków do pokazania

Wybrany Strona jest określana przez odczytanie ciągu zapytania. Największym wyzwaniem była zmiana adresu URL z nowym numerem strony. Metoda ta wykorzystuje parametr ciągu zapytania „P”, aby określić, która strona, aby wyświetlić ...

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; 
} 

prostego wzoru, aby określić zakres numerów stron, aby pokazać ...

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

każdy link następnie pobiera generowane przy użyciu coś jak (gdzie min i max określić zakres strona odwołuje się utworzyć) ...

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); 
} 

można również tworzyć „poprzedni” (i „Dalej”) przyciski ...

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

Pierwsze i ostatnie przyciski są prosto do przodu ...

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

przy określaniu, kiedy pokazać „...”, pokazują dosłownego kontrolę gdy zakres link nie jest obok pierwszego lub ostatniej strony ...

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

Zrób to samo dla wyżej dla "max < objętości".

Cały ten kod jest umieszczany w metodzie zastępowania CreateChildControls.

+0

Zauważyłem, że to też robi [Poprz.] 1..2 3 4 5 ... 213 [Dalej] –

+0

Uwaga: w tym przykładzie są generowane łącza do stron o wartości 0 oparty, tj. p = 0 dla pierwszej strony. Przykład można zmienić, jeśli link pierwszej strony musi być 1. Mam nadzieję, że ma to sens, a to pomaga! – Tom

0

Można spróbować NPager. Używa łańcucha zapytania dla indeksów stron, bez postbacków. Potrzebuje Bootstrap do stylizacji, jednak można mieć własnych niestandardowych klas css do sterowania przy użyciu „stronicowanie” CSS class.Here to działa DEMO

enter image description here

+0

Myślę, że powinieneś mieć zrzeczenie się, aby powiedzieć, że to twój własny projekt. –

+1

Przepraszam, powinienem był. –