Ограничьте количество страниц, отображаемых на пользовательском пейджинге.

http://www.aspsnippets.com/Articles/Custom-Paging-in-ASPNet-GridView-using-SQL-Server-Stored-Procedure.aspx

Основываясь на приведенном выше руководстве, я смог создать пользовательский пейджинг в своем сеточном представлении. Однако я хочу ограничить количество отображаемых страниц. Пример Когда у меня есть 10 000 записей для отображения по 10 строк на страницу, ссылки на страницы будут загружать ссылки на 1 - 1000 страниц, что не идеально.

Как я могу сделать вывод что-то вроде этого:

Первая 1 2 3 4 5 6 7 8 9 10 Последняя

и настроить автоматически

Первая 2 3 4 5 6 7 8 9 10 11 Последняя

и так далее.

Вот код, который создает настройки показа всех страниц

private void PopulatePager(int recordCount, int currentPage)
{
    double dblPageCount = (double)((decimal)recordCount / decimal.Parse(ddlPageSize.SelectedValue));
    int pageCount = (int)Math.Ceiling(dblPageCount);
    List<ListItem> pages = new List<ListItem>();
    if (pageCount > 0)
    {
        pages.Add(new ListItem("First", "1", currentPage > 1));
        for (int i = 1; i <= pageCount; i++)
        {
            pages.Add(new ListItem(i.ToString(), i.ToString(), i != currentPage));
        }
        pages.Add(new ListItem("Last", pageCount.ToString(), currentPage < pageCount));
    }
    rptPager.DataSource = pages;
    rptPager.DataBind();
}

2 ответа

Решение

Изменить вас, если заблокировать это

if (pageCount > 0)
{
    int showMax = 10;
    int startPage;
    int endPage;
    if (pageCount <= showMax) 
    {
        startPage = 1;
        endPage = pageCount;
    }
    else
    {
        startPage = currentPage;
        endPage = currentPage + showMax - 1;
    }

    pages.Add(new ListItem("First", "1", currentPage > 1));

    for (int i = startPage; i <= endPage; i++)
    {
        pages.Add(new ListItem(i.ToString(), i.ToString(), i != currentPage));
    }

    pages.Add(new ListItem("Last", pageCount.ToString(), currentPage < pageCount));
}

При необходимости измените showMax.

Использовать этот

Установить свойство настройки пейджера

и больше информации используйте GridView Paging Sample в ASP.NET

Вы также можете добавить это, чтобы добавить точное количество страниц у вас есть

      for (int i = startPage; i <= endPage && i<dblPageCount; i++)
Другие вопросы по тегам