一個實用的ASP分頁函數,解決你重複寫分頁代碼的煩惱

來源:互聯網
上載者:User
   有時候,大家是不是因為寫一些重複的代碼而感到煩惱呢?由於在做ASP程式時,很多時候都要用到分頁,重複作分頁程式錯誤多不說了,而且影響到作程式的積極性,故寫一分頁函數,方便大家調用。如下:

       <%
'=================   ProgrammName: 分頁函數   =======================
'  ================   Programmed  by  Bubuy   =====================
'    ====================   2003.10.16   ========================
Function cutPage(sqlStr,Conn,dateNums,pageNums,URLs)'利用ADO分頁的函數
  Dim sql,Cn,dateNum,pageNum,URL,rsDate
  Sql=Trim(sqlStr) '獲得sql語句。
  Set Cn=Conn '獲得資料對象
  dateNum=Cint(dateNums) '獲得每頁得記錄數
  pageNum=Cint(pageNums) '獲得當前頁碼
  URL=Trim(URLs) '獲得路徑
  Set rsDate=Server.CreateObject("ADODB.Recordset")
  rsDate.PageSize=dateNum
  rsDate.Open Sql,cn,1,1
  IF rsDate.Eof Then
     Response.Write("<center><font stlye='font-size:14px;' color='#ff0000'>對不起,沒有記錄!</font></center>")
  Else
     IF pageNum="" or pageNum<1 Then
     pageNum=1
  ElseIf pageNum>rsDate.PageCount Then
     pageNum=rsDate.PageCount
  End IF
  rsDate.absolutepage =pageNum
     Dim recordHead,recordLast '定義當前頁開頭記錄和結束記錄
  recordHead=1
  If pageNum>1 Then recordHead=dateNum*(pageNum-1)
  If pageNum>=rsDate.PageCount Then
     recordLast=rsDate.RecordCount
     Else
     recordLast=dateNum*pageNum
  End If  
     Response.Write("<table width=100% border='0' cellpadding='0' cellspacing='0' style='font-size:12px;'>")
     Response.Write("<tr><td height=38 align=left><font stly='font-size:12px;'>(第"&recordHead&"-"&recordLast&"條,共"&rsDate.Recordcount&"條,每頁顯示"&dateNum&"條)</font></td></tr>")   
  Dim URLa '定義判斷輸入得URL包含?沒有的變數
  Dim upPage,downPage,allPage '定義向上和向下翻的變數
  Dim allWrite '定義輸出
  upPage=pageNum-1
  downPage=pageNum+1
     URLa=Split(URL,"?",-1,1)
     If URLa(0)=URL Then
     upPage="<a href=" & URL & "?page=" & upPage &" stlye='font-size:12px;'>上一頁</a> "
  If pageNum=1 Then upPage=""
  downPage="<a href=" & URL & "?page=" & downPage &" stlye='font-size:12px;'>下一頁</a>"
  If pageNum=rsDate.PageCount Then downPage=""
     Else
        upPage="<a href=" & URL & "&page=" & upPage &"  stlye='font-size:12px;'>上一頁</a> "
  If pageNum=1 Then upPage=""
  downPage="<a href=" & URL & "&page=" & downPage &"  stlye='font-size:12px;'>下一頁</a>"
  If pageNum=rsDate.PageCount Then downPage=""
     End If
  allWrite=upPage & downPage & "  共" & rsDate.PageCount & "頁 " & "目前第"& pageNum &"頁"
  allwrite="<font style='font-size:12px;'>" & allWrite & " 到第<input type='text' style='width:30px;'>頁<input type='submit' value='GO'></font>"
  Response.Write("<tr><form name='formPage' method='post' action="&URL&"><td height=30 align=right style='font-szie=12px;'>" & allWrite & "</td></form></tr>")
  Response.Write("<tr><td align=center>")
  Response.Write("<table width=100% border='0' cellpadding='0' cellspacing='0' style='font-size:12px;'>")
  Response.Write("<tr>")
  Response.Write("<tr bgcolor='#efffce' height=25>")
  Dim id,i
  For i=0 to rsDate.Fields.Count-1 '設定表頭
     Response.Write("<td align='center'><font style='font-size:14px;'><b>"&rsDate.Fields(i).Name&"</b></font></td>")
  Next
  Response.Write("</tr>")
  id=0
  While not rsDate.EOF and id<dateNum
     id=id+1
  If id Mod 2=0 then
           Response.Write("<tr bgcolor=#f7f6e7>")
        Else
           Response.Write("<tr bgcolor=#ffffff>")
        End If
  For Each fils in rsDate.Fields
        Response.Write("<td align='center' height=20>"&fils&"</td>")
  Next
  Response.Write("</tr>")
  rsDate.MoveNext    
  Wend
  Response.Write("<tr height=25 bgcolor='#efffce'>")
     For i=0 to rsDate.Fields.Count-1 '設定表尾
     Response.Write("<td align='center'><font style='font-size:14px;'><b>"&rsDate.Fields(i).Name&"</b></font></td>")
  Next
  Response.Write("</tr>")
  Response.Write("</table></td></tr>")
  Response.Write("<tr><form name='formPage1' method='post' action="&URL&"><td height=30 align=right>" & allWrite & "</td></form></tr>")
  End IF
  rsDate.close
  Set rsDate=nothing
End Function
%>

這樣使用
page=request("page")
sql="select * from [table]" '寫sql語句
url="xx.asp"當然也可以是"xx.asp?bubuy=1"
conn大家都知道是定義的什麼吧
調用就這樣
Call cutPage(sql,conn,"3",page,url)'3代表每頁顯示3條記錄




聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.