Ограничьте количество страниц, отображаемых на пользовательском пейджинге.
Основываясь на приведенном выше руководстве, я смог создать пользовательский пейджинг в своем сеточном представлении. Однако я хочу ограничить количество отображаемых страниц. Пример Когда у меня есть 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.
2015-05-09 07:11
Вы также можете добавить это, чтобы добавить точное количество страниц у вас есть
for (int i = startPage; i <= endPage && i<dblPageCount; i++)