2013-06-03 113 views
0

我使用此代碼顯示記錄的頁碼在傳統的ASP + MYSQL:傳統的ASP分頁

<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> 

,但如果我有很多pageresults的,它顯示出一些長線....怎麼可能在更改頁面時只顯示5個頁面,顯示下一個?

像這樣:

第一< 1 2 3 4 5>最後

,如果我點擊5

第一< 5 6 7 8 9>最後

等。 。

回答

1

如果你想保留一些其他查詢字符串參數,這段代碼也可以。它刪除頁面值,添加新的頁面值並構建分頁控制html。

它使用Twitter的引導樣式:http://twitter.github.io/bootstrap/components.html#pagination

用法:

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

代碼:

Public Function RemoveEmptyQueryStringParameters(strQueryString) 
     If IsNullOrEmpty(strQueryString) Then Exit Function 

     Dim strNewQueryString: strNewQueryString = "" 
     strQueryString = Replace(strQueryString, "&amp;", "&") 
     strQueryString = Replace(strQueryString, "?", "&") 

     Dim arrQueryString: arrQueryString = Split(strQueryString ,"&") 

     For i=0 To UBound(arrQueryString) 
      strTempParameter = Left(arrQueryString(i), Instr(arrQueryString(i) & "=", "=") - 1) 
      strTempParameterValue = Right(arrQueryString(i), Len(arrQueryString(i)) - InstrRev(arrQueryString(i), "=")) 
      If Not IsNullOrEmpty(strTempParameterValue) Then 
       strNewQueryString = strNewQueryString & "&" & arrQueryString(i) 
      End If 
     Next 

     If InStr(strNewQueryString,"&") = 1 Then 
      strNewQueryString = "?" & Right(strNewQueryString, Len(strNewQueryString) - 1) 
     End If 
     strNewQueryString = Replace(strNewQueryString, "&", "&amp;") 

     Erase arrQueryString 
     Set arrQueryString = Nothing 

     RemoveEmptyQueryStringParameters = Trim(strNewQueryString) 
    End Function 

    Public Function AddQueryStringParameter(ByVal strQueryString, ByVal strParameter, ByVal strValue) 
     Dim strNewQueryString: strNewQueryString = "" 
     strNewQueryString = Replace(strQueryString, "&amp;", "&") 
     strNewQueryString = Replace(strNewQueryString, "?", "&") 

     strNewQueryString = strNewQueryString & "&" & strParameter & "=" & strValue 

     If InStr(strNewQueryString,"&") = 1 Then 
      strNewQueryString = "?" & Right(strNewQueryString, Len(strNewQueryString) - 1) 
     End If 
     strNewQueryString = Replace(strNewQueryString, "&", "&amp;") 

     AddQueryStringParameter = Trim(strNewQueryString) 
    End Function 

    Public Function PagingControl(ByVal intPage, ByVal intPageCount, ByVal strQueryString) 
     If intPageCount <= 1 Then 
      PagingControl = "" 
      Exit Function 
     End If 

     strQueryString = RemoveEmptyQueryStringParameters(strQueryString) 
     strQueryString = RemoveQueryStringParameter(strQueryString, "page") 

     Dim strQueryStringPaging: strQueryStringPaging = "" 
     Dim strHtml: strHtml = "<div class=""pagination""><ul>" 

     If cInt(intPage) > 1 Then 
      strQueryStringPaging = AddQueryStringParameter(strQueryString, "page", "1") 
      strHtml = strHtml & "<li><a href=""" & strWebSiteUrl & strQueryStringPaging & """>Anfang</a></li>" 

      strQueryStringPaging = AddQueryStringParameter(strQueryString, "page", CInt(intPage - 1)) 
     strHtml = strHtml & "<li><a href=""" & strWebSiteUrl & strQueryStringPaging & """>&lt; Zur&uuml;ck</a></li>" 
     Else 
     strHtml = strHtml & "<li class=""disabled""><a href=""#"">Anfang</a></li>" & _ 
     "<li class=""disabled""><a href=""#"">&lt; Zur&uuml;ck</a></li>" 
     End If 

     Dim intPagesToShow: intPagesToShow = 10 

     If intPageCount >= intPagesToShow Then 
     If Cint(intPage)>Int(intPagesToShow/2) Then 
      If Cint(intPage)>(intPageCount-Int(intPagesToShow/2)) Then 
         intStart = intPageCount-intPagesToShow 
         intEnd = intPageCount 
      Else 
         intStart = intPage-Int(intPagesToShow/2) 
         intEnd = intPage+Int(intPagesToShow/2) 
      End If 
     Else 
      intStart = 1 
      intEnd = intPagesToShow 
     End If 
     Else 
     intStart=1 
     intEnd=intPageCount 
     End If 

     If intStart=0 Then 
     intStart=1 
     End If 

     For i = intStart To intEnd 
      If Cint(intPage)=i Then 
      strHtml = strHtml & "<li class=""active""><a href=""" & strWebSiteUrl & strQueryStringPaging & """>" & i & "</a></li>" 
      Else 
      strQueryStringPaging = AddQueryStringParameter(strQueryString, "page", Cint(i)) 
      strHtml = strHtml & "<li><a href=""" & strWebSiteUrl & strQueryStringPaging & """>" & i & "</a></li>" 
      End If 
     Next 

     If cInt(intPage) < cInt(intPageCount) Then 
     strQueryStringPaging = AddQueryStringParameter(strQueryString, "page", CInt(intPage + 1)) 
     strHtml = strHtml & "<li><a href=""" & strWebSiteUrl & strQueryStringPaging & """>Vorw&auml;rts &gt;</a></li>" 

      strQueryStringPaging = AddQueryStringParameter(strQueryString, "page", Cint(intPageCount)) 
      strHtml = strHtml & "<li><a href=""" & strWebSiteUrl & strQueryStringPaging & """>Ende</a></li>" 
     Else 
     strHtml = strHtml & "<li class=""disabled""><a href=""#"">Vorw&auml;rts &gt;</a></li>" & _ 
     "<li class=""disabled end""><a href=""#"">Ende</a></li>" 
     End If 

     strHtml = strHtml & "</ul></div>" 

     PagingControl = Trim(strHtml) 
    End Function 
1

我需要一個simular解決方案ASP。 我找不到任何有用的東西,所以我自己做了一件事。

我通常只使用PHP進行編程,但在我做到這一點的情況下這是不可能的。 所以,如果我的代碼是有點slopy,隨意提高;)

小功能我熟了起來:

<% 

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 

%> 

使用像這樣:

<%=paginationHTML(page,pages,"?pg=")%> 
+0

@喬納森 - joosten - 如何我是否使用此代碼,以便分頁開始1 ..此刻,分頁從0開始? ..乾杯 – BigJobbies

+0

我更改了代碼,因此它不顯示頁面0. 只有在沒有頁面的情況下它才應該給出頁面0。 希望這個小小的改進可以幫助你。 –