Вопрос

Я ищу достойный элемент управления подкачкой в ASP.NET, очень похожий на Stackoverflow pager.Кто-нибудь может порекомендовать один из них?

Я бы предпочел тот, который также не использует обратную передачу, просто настраиваемую строку запроса.

Это было полезно?

Решение 2

Я ожидал больше ответов, но, похоже, многие люди просто создают свои собственные.Я нашел приличный, который довольно часто поддерживается на codeproject.com

cp

Это не совсем совпадает с stackoverflow.com один.Было бы неплохо, если бы существовал достойный элемент управления с открытым исходным кодом, который имел бы множество различных вариантов вывода.

Другие советы

Это довольно легко сделать самостоятельно.Я создал простой пользовательский элемент управления на основе пейджера переполнения стека с двумя свойствами...

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

При определении того, когда показывать "...", показывайте буквальный элемент управления, когда диапазон ссылок не находится рядом с первой или последней страницами...

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

Сделайте то же самое, что указано выше, для "max < Количество страниц".

Весь этот код помещен в переопределяемый метод CreateChildControls.

Я работал с элементами управления страницами DevExpress и Telerik и предпочитаю DevExpress pager.Я не такой конечно если DevExpress-пейджер может работать напрямую со строкой запроса, но я был бы удивлен, если бы это было не так, поскольку он очень гибкий.Что касается перекачки между существующими страницами после загрузки, все может находиться на клиенте или, если необходимо перейти на сервер, управление полностью оснащено AJAX.Я предлагаю вам начать поиск по адресу www.devexpress.com , а затем также проверить www.Telerik.com (который также оснащен AJAX).

Не элемент управления, но это способ реализовать подкачку на уровне базы данных: Подкачка страниц SQL Server 2005

Я написал элемент управления пейджером с именем:Гибкий Пейджер
Подробнее: http://www.codeproject.com/Articles/748270/Flexy-Pager-for-ASP-NET-WebForm-MVC

enter image description here

Ты можешь попробовать НПагер.Использует строку запроса для индексов страниц, без обратной передачи.Требуется Bootstrap для стилизации, однако вы можете создать свои собственные css-классы для элемента управления, используя CSS-класс 'pagination'.Вот рабочий ДЕМОНСТРАЦИЯ

enter image description here

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top