Asp classic 经典ASP分页

Asp classic 经典ASP分页,asp-classic,pagination,Asp Classic,Pagination,我使用以下代码显示经典asp+Mysql中记录集的分页: <ul class="pagination"> <% IF Cint(PageNo) > 1 then %> <li><a rel="1" href="#" data-topic="<%=Request.QueryString("TOPIC_ID")%>" data-page="1">Prime</a></li> <li

我使用以下代码显示经典asp+Mysql中记录集的分页:

<ul class="pagination">
    <% IF Cint(PageNo) > 1 then %>
    <li><a rel="1" href="#" data-topic="<%=Request.QueryString("TOPIC_ID")%>" data-page="1">Prime</a></li>
    <li><a rel="<%=PageNo-1%>" href="#" data-topic="<%=Request.QueryString("TOPIC_ID")%>" data-page="<%=PageNo-1%>"><</a></li>
    <% End IF%>
    <% For intID=1 To TotalPage%>
    <% if intID=Cint(PageNo) Then%>
    <li><a href="" class="selected"><%=intID%></a></li>
    <%Else%>
    <li><a rel="<%=intID%>" href="#" data-topic="<%=Request.QueryString("TOPIC_ID")%>" data-page="<%=intID%>"><%=intID%></a></li>
    <%End IF%>
    <%Next%>
    <% IF Cint(PageNo) < TotalPage Then %>
    <li><a rel="<%=PageNo+1%>" href="#" data-topic="<%=Request.QueryString("TOPIC_ID")%>" data-page="<%=PageNo+1%>">></a></li>
    <li><a rel="<%=TotalPage%>" href="#" data-topic="<%=Request.QueryString("TOPIC_ID")%>" data-page="<%=TotalPage%>">Ultime</a></li>
    <% End IF%>
  </ul>
    1那么%>
但是如果我有很多页面结果,它会显示一个长长的数字行。。。。怎么能在换页时只显示5页,然后显示

像这样:

第一个<12345>最后一个

如果我点击5

第一次<5 6 7 8 9>最后一次


等等。

如果您想保留一些其他查询字符串参数,此代码也可以使用。它删除页面值,添加新的页面值,并构建页面控制html

它使用Twitter引导样式:

用法:

Response.Write PagingControl(10, 30, "?field-keywords=whatever&page=7")
代码:

公共函数RemoveEmptyQueryString参数(strQueryString)
如果IsNullOrEmpty(strQueryString),则退出函数
Dim strNewQueryString:strNewQueryString=“”
strQueryString=Replace(strQueryString,“&;”、“&”)
strQueryString=Replace(strQueryString,“?”,“&”)
Dim arrQueryString:arrQueryString=Split(strQueryString,“&”)
对于i=0到UBound(arrQueryString)
strTempParameter=Left(arrQueryString(i),Instr(arrQueryString(i)&“=”,“=”)-1)
strTempParameterValue=Right(arrQueryString(i),Len(arrQueryString(i))-InstrRev(arrQueryString(i),“=”)
如果不是IsNullOrEmpty(strTempParameterValue),则
strNewQueryString=strNewQueryString&&arrQueryString(i)
如果结束
下一个
如果InStr(strNewQueryString,&“)=1,则
strNewQueryString=“?”&右(strNewQueryString,Len(strNewQueryString)-1)
如果结束
strNewQueryString=Replace(strNewQueryString,&,“&;”)
消除棱纹
设置arrQueryString=Nothing
RemoveEmptyQueryString参数=修剪(strNewQueryString)
端函数
公共函数addQueryString参数(ByVal strQueryString、ByVal strParameter、ByVal strValue)
Dim strNewQueryString:strNewQueryString=“”
strNewQueryString=Replace(strQueryString,“&;”、“&”)
strNewQueryString=替换(strNewQueryString,“?”,“&”)
strNewQueryString=strNewQueryString&“&”和strParameter&“=”和strValue
如果InStr(strNewQueryString,&“)=1,则
strNewQueryString=“?”&右(strNewQueryString,Len(strNewQueryString)-1)
如果结束
strNewQueryString=Replace(strNewQueryString,&,“&;”)
AddQueryString参数=修剪(strNewQueryString)
端函数
公用函数分页控件(ByVal intPage、ByVal intPageCount、ByVal strQueryString)
如果intPageCount为1,则
strQueryStringPaging=AddQueryStringParameter(strQueryString,“第页”,“1”)
strHtml=strHtml&“
  • ” strQueryStringPaging=AddQueryStringParameter(strQueryString,“page”,CInt(intPage-1)) strHtml=strHtml&“
  • ” 其他的 strHtml=strHtml&“禁用”>”和_ “
  • ” 如果结束 Dim intPagesToShow:intPagesToShow=10 如果intPageCount>=intPagesToShow,则 如果Cint(intPage)>Int(intPagesToShow/2),则 如果Cint(intPage)>(intPageCount Int(intPagesToShow/2)),则 intStart=intPageCount intPagesToShow intPageCount=intPageCount 其他的 intStart=intPage Int(intPagesToShow/2) intential=intPage+Int(intPagesToShow/2) 如果结束 其他的 intStart=1 intential=intPagesToShow 如果结束 其他的 intStart=1 intPageCount=intPageCount 如果结束 如果intStart=0,则 intStart=1 如果结束 因为我开始打算 如果Cint(intPage)=i,则 strHtml=strHtml&“
  • ” 其他的 strQueryStringPaging=AddQueryStringParameter(strQueryString,“page”,Cint(i)) strHtml=strHtml&“
  • ” 如果结束 下一个 如果cInt(intPage)” strQueryStringPaging=AddQueryStringParameter(strQueryString,“page”,Cint(intPageCount)) strHtml=strHtml&“
  • ” 其他的 strHtml=strHtml&“禁用”>”和_ “
  • ” 如果结束 strHtml=strHtml&“” 分页控制=微调(strHtml) 端函数
    我需要ASP中的模拟解决方案。 我找不到任何有用的东西,所以我自己做了一些东西

    我通常只使用PHP编程,但在我制作这个程序的情况下,这是不可能的。 因此,如果我的代码有点邋遢,请随意改进;)

    我设计的一个小功能:

    <%
    
    page = cInt(Request.QueryString("pg"))
    pages = cInt(number of pages)
    
    if page <1 then page = 1
    if page > pages then page = pages
    
    Function paginationHTML(page, lastPage, URL)
    
    if page >1 then
        paginationHTML = "<a href=""" & URL & page-1 & """>prev</a>"
        paginationHTML = paginationHTML & "<a href=""" & URL & "1"">1</a>"
    end if
    
    if page >2 then
        paginationHTML = paginationHTML & "<a>...</a>"
    end if
    
    if page >0 then
        paginationHTML = paginationHTML & "<a href=""" & URL & page & """ class='jp-current'>"& page &"</a>"
    end if
    
    if lastPage >2 then
        if page < lastPage-1 then
            paginationHTML = paginationHTML & "<a>...</a>"
        end if
    end if
    
    if page < lastPage then
        paginationHTML = paginationHTML & "<a href=""" & URL & lastPage & """>"&lastPage&"</a>"
        paginationHTML = paginationHTML & "<a href=""" & URL & page+1 & """>next</a>"
    end if
    
    
    End Function
    
    %>
    
    1那么
    分页HTML=“”
    分页HTML=分页HTML&“”
    如果结束
    如果页面>2,则
    分页HTML=分页HTML&“”
    如果结束
    如果lastPage>2,则
    如果第页<最后一页-1,则
    分页HTML=分页HTML&“”
    分页HTML=分页HTML&“”
    如果结束
    端函数
    %>
    
    像这样使用:

    <%=paginationHTML(page,pages,"?pg=")%>
    
    
    
    @johnathan joosten-如何使用此代码以使分页启动1。。此时,分页从0?开始。。Cheers我更改了代码,使其不显示第0页。只有在没有页面的情况下,它才应该给出第0页。希望这个小小的改进能帮助你。
    <%=paginationHTML(page,pages,"?pg=")%>