(Оригинальный vince6799)
Разбиение на страницы в коде asp немного затруднительно. Лично я в процессе написания кода написал код разбиения на две функции. Хотя функция не идеальна, ее должно быть достаточно для общих приложений.
<%
'Функция пейджинга разделена на две функции
'CalcPage(totalrec,msg_per_page,currentpage,n,rowcount,PageRs) функция расчета страниц
функция
списка подкачки'функция
расчета подкачки
'totalrec общее количество наборов записей
'msg_per_page Количество записей, отображаемых на каждой странице. Эту переменную необходимо назначить заранее при вызове CalcPage.
'currentpage переменная текущей страницы, вам необходимо заранее присвоить значение этой переменной при вызове CalcPage
'n общее количество страниц
'rowcount устанавливает количество записей данных на странице
'Объект набора записей PageRs
sub CalcPage(totalrec,msg_per_page,currentpage,n,rowcount,PageRs)
n=0 'Устанавливаем номер страницы равным 0, если нет записи
если текущая страница="" то текущая страница=0
'PageRs.EOF и PageRs.bof нет записей
'Не PageRs.EOF или не PageRs.BOF записано
если не PageRs.EOF или не PageRs.BOF, то
totalrec=PageRs.recordcount
PageRs.pagesize=msg_per_page
if totalrec mod msg_per_page = 0 then 'Рассчитать общее количество страниц, Recordcount: общее количество записей данных
n = totalrecmsg_per_page 'n:Общее количество страниц
еще
n = общая записьmsg_per_page+1
конец, если
если не isnumeric(currentpage) или currentpage="" то currentpage=1
Если текущая страница <> "" то
текущая страница = CINT (текущая страница)
конец, если
если текущая страница < 1, то
текущая страница = 1
конец, если
если текущая страница*msg_per_page > totalrec и нет((currentpage-1)*msg_per_page < totalrec), то
текущая страница=1
конец, если
PageRs.absolutepage = currentpage 'абсолютная страница: установить указатель на начало страницы.
rowcount = PageRs.pagesize 'pagesize: установите количество записей данных для каждой страницы.
конец, если
конец субтитра
%>
<%
'Функция списка пейджинга
'адрес перехода по URL
'запрос? Параметры после?
'Сепаратор-сепаратор
'Тип подкачки ListType
'Тип:0 "Первая страница | Предыдущая страница | Следующая страница | Последняя страница"
'Тип:1 "1 | 2 | 3 | 4 | ..........| Следующая страница"
'Тип: 2 "Первая страница | Первые десять страниц | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | Следующие десять страниц | Последняя страница"
'Стиль, используемый ссылками ListLink
на подстранице PageList(ListType,url,query,Separator,ListLink)
если Separator="" то Separator="|"
если ListType="" то ListType="0"
выберите регистр ListType
случай "0"
response.write""¤tpage&"/"&n&"page "
response.write "Всего"&totalrec&" фрагментов информации "
если текущая страница <= 1, то
response.write"Первая страница "&Разделитель&" "
response.write"Предыдущая страница "&Разделитель&" "
еще
response.write"<a href="""&url&"?page=1&"&query&""" class="""&ListLink&""">Первая страница</a> "&Separator&" "
response.write"<a href="""&url&"?page="¤tpage-1&"&"&query&""" class="""&ListLink&""">Предыдущая страница</a> "&Separator&"  ; "
конец, если
если текущая страница = n, то
response.write"Следующая страница "&Разделитель&" "
response.write"Последняя страница "
еще
response.write"<a href="""&url&"?page="¤tpage+1&"&"&query&""" class="""&ListLink&""">Следующая страница</a> "&Separator&"  ; "
response.write"<a href="""&url&"?page="&n&"&"&querry&""" class="""&ListLink&""">Последняя страница</a> "
конец, если
случай "1"
если текущая страница < n, то
response.write"<a href="""&url&"?page="¤tpage+1&"&"&query&""" class="""&ListLink&""">Следующая страница</a> "
еще
response.write"Следующая страница "
конец, если
для я = от 1 до n
если cstr(i)=cstr(currentpage) тогда
response.write "<b>"&i&"</b>"&" "&Разделитель&" "
еще
response.write"<a href="""&url&"?page="&i&"&"&querry&""" class="""&ListLink&""">"&i&"</a> "&Separator&" "
конец, если
следующий
случай "2"
PageMerCout=10 'Максимальное количество страниц, которое можно перелистывать каждый раз
'Получаем сегмент с максимальным номером страницы записи
если n мод PageMerCout=0, то
MaxPageFiled=nPageMerCout
еще
MaxPageFiled=nPageMerCout+1
конец, если
'Определить сегмент номера страницы, где находится текущая страница
если мод текущей страницы PageMerCout = 0, то
CurrPageFiled=текущая страницаPageMerCout
еще
CurrPageFiled=текущая страницаPageMerCout+1
конец, если
'Получить максимальный номер страницы и минимальный номер страницы текущего сегмента номера страницы
MaxPageNo=CurrPageFiled*PageMerCout
MinPageNo=(CurrPageFiled-1)*PageMerCout+1
'Вывод "первая страница | первые десять страниц |"
если текущая страница<=1, то
response.write"Первая страница "&Разделитель&" "
еще
response.write"<a href="""&url&"?page=1&"&query&""" class="""&ListLink&""">Первая страница</a> "&Separator&" "
конец, если
если CurrPageFiled<=1, то
response.write"Первые десять страниц "&Разделитель&" "
еще
response.write"<a href="""&url&"?page="&MinPageNo-PageMerCout&"&"&query&""" class="""&ListLink&""">Первые десять страниц</a> "&Separator&"  ;"
конец, если
'Вывод текущего сегмента номера страницы
от i=MinPageNo до MaxPageNo
если я <= n, то
если cstr(i)=cstr(currentpage) тогда
response.write "<b>"&i&"</b>"&" "&Разделитель&" "
еще
response.write"<a href="""&url&"?page="&i&"&"&querry&""">"&i&"</a> "&Separator&" "
конец, если
конец, если
следующий
'Вывод "следующие десять страниц | последняя страница"
если CurrPageFiled>=MaxPageFiled, то
response.write"Следующие десять страниц "&Разделитель&" "
еще
response.write"<a href="""&url&"?page="&MaxPageNo+1&"&"&query&""" class="""&ListLink&""">Следующие десять страниц</a> "&Separator&" "
конец, если
если текущая страница>=n, то
response.write"Последняя страница "
еще
response.write"<a href="""&url&"?page="&n&"&"&querry&""" class="""&ListLink&""">Последняя страница</a> "
конец, если
конец выбора
конец субтитра
%>