2010-11-16 4 views
1

им делать пагинацию данных, используя этот код:DataList Pagination

http://www.aspdotnetcodes.com/DataList_Dynamic_Paging_PagedDataSource.aspx

свою работу отлично, но моя проблема:

я не хочу, чтобы показать большое количество страниц, как это 1 2 3 4 5 6 7 8 9 10 11 12 ...

я хочу просто получить блок из 4 страниц 1 2 3 4 и после нажатия следующего очередного блока

появляться

ТНХА для помощи

ответ

0

Почему вы не просто изменить

for (int i = 0; i < pds.PageCount; i++) 

в

for (int i = 0; i < pds.PageCount && i < 4; i++) 
+0

Привет, хорошо, ваше предложение состоит в том, чтобы ограничить номера страниц в логе, но как создать следующий блок 5 6 7 8 thx для быстрого ответа – markov00

+0

Если это не ASP.NET, вы, вероятно, должны посмотреть на пользовательский пейджинг; но у меня нет опыта. – Stu

+0

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.pageddatasource.iscustompagingenabled.aspx – Stu

0

Это переменный ток # 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; 
} 
Смежные вопросы