Это переменный ток # 2,0 образом, вы могли бы рассмотреть возможность использования Enumerable.Range вместо петель для
PagedDataSource = new PagedDataSource();
PagedDataSource.DataSource = _yourData;
PagedDataSource.AllowPaging = true;
PagedDataSource.PageSize = 20;
PagedDataSource.CurrentPageIndex = PageNumber; // get from session, viewstate, ...
if (PagedDataSource.PageCount > 1)
{
rptDataPager.Visible = true;
rptDataPager.DataSource = GetPageRange(10); // try with 4 as you requested
rptDataPager.DataBind();
}
else
rptDataPager.Visible = false;
yourRepeater.DataSource = PagedDataSource;
yourRepeater.DataBind();
// and then the method
private ArrayList GetPageRange(int pagesToDisplay)
{
ArrayList pages = new ArrayList();
if (PagedDataSource.PageCount <= pagesToDisplay)
{
for (int i = 0; i < PagedDataSource.PageCount; i++)
pages.Add((i + 1).ToString());
}
else
{
if (PagedDataSource.CurrentPageIndex - (pagesToDisplay/2) <= 0)
{
for (int i = 0; i < pagesToDisplay; i++)
pages.Add((i + 1).ToString());
}
else if (PagedDataSource.CurrentPageIndex + (pagesToDisplay/2) >= PagedDataSource.PageCount)
{
for (int i = PagedDataSource.PageCount - pagesToDisplay; i < PagedDataSource.PageCount; i++)
pages.Add((i + 1).ToString());
}
else
{
for (int i = PagedDataSource.CurrentPageIndex - (pagesToDisplay/2); i < PagedDataSource.CurrentPageIndex + (pagesToDisplay/2); i++)
pages.Add((i + 1).ToString());
}
}
return pages;
}
Привет, хорошо, ваше предложение состоит в том, чтобы ограничить номера страниц в логе, но как создать следующий блок 5 6 7 8 thx для быстрого ответа – markov00
Если это не ASP.NET, вы, вероятно, должны посмотреть на пользовательский пейджинг; но у меня нет опыта. – Stu
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.pageddatasource.iscustompagingenabled.aspx – Stu