2009-10-20 3 views
-3

Как сделать пейджинг в Datalist. Мне нужно номера страниц следующим образом:Paging in Datalist

< 1 2 3 4 5> При нажатии «>» Следующие 5 страниц должны показывать ...

Позвольте мне прочистить кодирование потока ... я буду получать списки из базы данных с использованием хранимой процедуры со всеми записями. Затем, в соответствии с количеством страниц, должен отображаться номер страницы. Мне нужно только ограниченное количество номеров страниц, которые будут отображаться на странице. Когда я нажимаю следующую кнопку, должен отображаться следующий номер страницы. Моя хранимая процедура вернет набор данных. Это мой код для пейджинга ..

частная пустота doPaging() {

DataTable dt = new DataTable(); 
    dt.Columns.Add("PageIndex"); 
    dt.Columns.Add("PageText"); 
    for (int i = 0; i <= totalpage; i++) 
    { 
     DataRow dr = dt.NewRow(); 
     dr[0] = i; 
     dr[1] = i + 1; 
     dt.Rows.Add(dr); 
    } 

    dlPaging.DataSource = dt; 
    dlPaging.DataBind(); 
} 

Этот код будет отображать все номера страниц один раз на странице .. Вместо этого нужно только 5 номеров страниц следует отображать один раз , Когда я нажимаю следующую кнопку, должны отображаться следующие 5 номеров страниц.

+2

Какой язык/рамки? –

+0

Я делаю в ASPNET (DOTNET) – Nila

+0

Скажите, пожалуйста, какой источник данных вы используете, SQL Server? LINQ to SQL? Массив объектов? –

ответ

5

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

Я предполагаю, что у вас есть веб-сайт, или если это приложение Windows, у вас есть кнопка «Далее» и «Предыдущая».

Вы должны иметь следующее в вашем приложении:

  • Текущий индекс
  • Список Размер

Теперь, если вы хотите иметь 20 элементов на странице вы разделите число на 20 и если есть остальная часть этого подразделения, вы знаете, что будет дополнительная страница.

Пример

ListSize = 10 

AmountOfPages = ListSize/20 

if ((ListSize % 20) != 0) 
    AmountOfPages += 1; 

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

Следующим шагом будет следующая и предыдущая кнопка, обрабатывающая приращение и уменьшение текущего индекса.

Всякий раз, когда вы нажимаете «Предыдущий», «Следующий» или «Число» в вашем плеере списка, вы можете легко рассчитать текущий индекс начала и конечный индекс.

Поскольку вы знаете, что общее количество элементов на текущей странице может быть 20, а наименьший показатель равен 0. Если вы идете по этому правилу вы всегда можете сделать:

индекс * 20 и индекс * 20 + 20, чтобы получить текущий индекс начала вашего списка и текущий индекс конца вашего списка.

Пример

CurrentIndex = 0 

ListStart = CurrentIndex * 20 
ListEnd = CurrentIndex * 20 + 20 

Это приведет:

ListStart = 0 
ListEnd = 20 

И если бы вы были на Индексе Page 1 вы получите следующее

ListStart = 20 
ListEnd = 40 

Теперь у вас есть для этого нужно установить лимит на количество предметов и где начинать получать предметы.

Это, конечно же, зависит от источника данных или шаблона данных, используемых для вашего списка. Вы должны изучить API используемого шаблона или источника данных.

Но общая идея, если вы посмотрите на основной заявление Псевдо здесь:

select Columns from Source limit From, To 

Вы хотите сказать, ваш источник данных или SQL-запрос, чтобы просто Ограничить по данным Start и End Index. Приведенный выше пример больше применим к SQL, чем другие источники данных. Но он должен дать вам представление о том, как решить проблему.


Редактировать

Как я понимаю, вы повторно пост вы хотите, чтобы получить 1 - 5, когда вы находитесь на первой странице, это те страницы индексы конечно. И если вы нажмете Next, вы хотите 6 - 10.

Если вы думаете об этом, это не так сложно, если вы следуете приведенной выше логике, у вас есть индекс страницы, и все, что вы хотите сделать, это добавить к нему каждый раз каждый раз вы нажимаете «Далее» и уменьшаете его на 5, когда вы нажимаете «Предыдущий».

Это приведет к несколько следующих

Пример

doPaging(int direction) 
{ 
    // Direction represents the previous and next to make it easier 

    if (direction == 0) // previous 
     CurrentIndex -= 5 
    else if (direction == 1) // next 
     CurrentIndex += 5 

    if (CurrentIndex > MaxIndex || CurrentIndex < 0) 
     CurrentIndex = 0 
} 

Принято считать, что вы определены глобально Max Index, из предыдущего примера, что должно быть легко.

Теперь, если у вас есть

CurrentIndex = 0 

И называют doPaging(1) результатом CurrentIndex будет CurrentIndex = 5. Теперь вы можете использовать это, чтобы повторить текущие индексы, доступные для перехода к.

Что касается SQL Server и ограничение строки вы можете look into this