1. 论坛系统升级为Xenforo,欢迎大家测试!
    排除公告

谁有ASP的分页函数?请丢一个

本帖由 BoBo2006-03-29 发布。版面名称:后端开发

  1. BoBo

    BoBo New Member

    注册:
    2005-09-29
    帖子:
    929
    赞:
    0
    最好告诉我怎么用,或者给个例子,俺是小白:)
     
  2. leehui1983

    leehui1983 New Member

    注册:
    2006-02-26
    帖子:
    130
    赞:
    0
    <table width="760" border="0" align="center" cellpadding="0" cellspacing="0">
    <%
    dim tid,title,ttine,comment,i
    i=0
    set crs=server.createobject("adodb.recordset")
    sql="select * from news where classid="&classid&" order by id desc"
    crs.open sql,conn,1,1
    if counts=0 or counts="" then counts=10 '每页新闻条数
    crs.pageSize = counts '每页记录数
    allpages = crs.pageCount
    classid=request("classid") '总页数
    page = Request("page") '从浏览器取得当前页
    If not isNumeric(page) then page=1 'page不是数字
    if isEmpty(page) or Cint(page) < 1 then 'page 为空或小于1
    page = 1
    elseif Cint(page) >= allPages then 'page 值大于总页数
    page = allPages
    end if
    crs.AbsolutePage = page
    do while not crs.eof
    i=i+1
    temp=CRS.RecordCount-(page-1)*crs.pageSize-I+1
    tid=crs("id")
    title=crs("title")
    comment=crs("comment")
    ttime=crs("time")
    %>
    <tr>
    <td height="100" class="h" id="cd"><%response.write"<li><a class=red href=shownews.asp?titleid="&tid&">"&left(""&title&"",11)&"</a><br>"&left(""&comment&"",70)&"..."%></td>
    <td width="150" height="100" align="right" id="cd2"><%=ttime%></td>
    </tr>
    <%
    counts = counts - 1
    crs.movenext
    if i>=10 or crs.eof then exit do
    loop

    %>
    </table>
    <table width="760" height="25" border="0" align="center" cellpadding="0" cellspacing="0">
    <tr>
    <td height="30" align="right"><%
    '显示总留言条数
    response.write "<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;总计新闻"&CRS.RecordCount&"条 "
    if page = 1 then '到达第一页
    response.write "<font color=darkgray>首页 前页</font>"
    else '不是第一页
    'request.ServerVariable("script_name") 获得程序的虚拟路径
    response.write "<a href="&request.ServerVariables("script_name")&"?classid="&classid&"&page=1>首页</a><a href="&request.ServerVariables("script_name")&"?classid="&classid&"&page="&page-1&">前页</a>"
    end if
    if page = allpages then '到达最后一页
    response.write "<font color=darkgray> 下页 末页</font>"
    else '不是最后一页
    '建立超级链接
    response.write " <a href="&request.ServerVariables("script_name")&"?classid="&classid&"&page="&page+1&">下页</a> <a href="&request.ServerVariables("script_name")&"?classid="&classid&"&page="&allpages&">末页</a>"
    end if
    '显示留言当前的页数信息
    response.write " 第"&page&"页 共"&allpages&"页 "

    %> </td>
    </tr>
    </table>
     
  3. leehui1983

    leehui1983 New Member

    注册:
    2006-02-26
    帖子:
    130
    赞:
    0
    把里面的数据库字段和变量名换成你的就可以了,这个是我的网页用的,比较简单。应该能看懂把
     
  4. BoBo

    BoBo New Member

    注册:
    2005-09-29
    帖子:
    929
    赞:
    0
    谢谢楼上
    最好有通用的
    类或者函数都可以
     
  5. Ulysses

    Ulysses New Member

    注册:
    2006-02-05
    帖子:
    10,018
    赞:
    16
    我自己用的,没怎么考虑效率。

    代码:
    <%
    '================================================================'
    '    列表数据
    '================================================================'
    Sub ListData()
        Dim intAbsolutePage, intPageSize, intRecordCount, intPageCount, i    '    分页部分
    	i = 0
    	
    	'    PageSize 考虑使用 Cookies 记录
    	intAbsolutePage = CID(Request.QueryString("Page"))
    	intPageSize = CID(Request.QueryString("PageSize"))
    	
    	If intAbsolutePage = 0 Then intAbsolutePage = 1
    	If intPageSize = 0 Or intPageSize > 100 Then intPageSize = 20
    	
    	'intRecordCount = conn.Execute("SELECT * FROM Union_User;")(0)
    	
        Dim rs, sql
    	Set rs = Server.CreateObject("ADODB.Recordset")
    	sql = "SELECT [NewsID], [NewsTitle], [NewsDate FROM [News] ORDER BY [NewsID] DESC;"
    	rs.Open sql, conn, 1, 1, 1
    
    	intRecordCount = rs.RecordCount
    	rs.PageSize = intPageSize
    	intPageCount = rs.PageCount
    	
    	'If intRecordCount Mod intPageSize = 0 Then
    	'    intPageCount = intRecordCount / intPageSize
    	'Else
    	'    intPageCount = Int(intRecordCount / intPageSize) + 1
    	'End If
    	
    	If intAbsolutePage > intPageCount Then intAbsolutePage = intPageCount
    	
    	If intRecordCount > 0 Then
    	    'rs.AbsolutePosition = rs.AbsolutePosition + ((Abs(intAbsolutePage) - 1) * intPageSize)
    		rs.AbsolutePage = intAbsolutePage
    		
    		Response.Write("<table width=""100%"" cellpadding=""2"" cellspacing=""1"" border=""0"" class=""border"">" & vbCrLf)
    		Response.Write("<tr bgcolor=""#A4B6D7"">" & vbCrLf)
    		Response.Write("<th width=""100"">标题</th>" & vbCrLf)
    		Response.Write("<th>日期</th>" & vbCrLf)
    		Response.Write("<th width=""80"">操作</th>" & vbCrLf)
    		Response.Write("</tr>" & vbCrLf)
    		
    	Else
    	    Response.Write("<p>没有找到符合要求的记录。</p>" & vbCrLf & "<p>&nbsp;</p>" & vbCrLf)
    	End If
    	
    	Do While Not rs.BOF And Not rs.EOF And i < intPageSize
            Response.Write("<tr>" & vbCrLf)
    		Response.Write("  <td align=""left"" class=""tdbg""><a href="news.asp?NewsID=" & rs("NewsID") & """>" & rs("NewsTitle") & "</a></td>")
    		Response.Write("<td align=""center""" & rs("NewsDate") & "</td>" & vbCrLf)
    		Response.Write("  <td align=""center"" class=""tdbg"">" & rs("UnionID") & "</td>" & vbCrLf)
    		Response.Write("</tr>" & vbCrLf)
    
    		i = i + 1
    	    rs.MoveNext
    	Loop
    	
    	If intRecordCount > 0 Then Response.Write("</table>")
    	rs.Close
    	Set rs = Nothing
    	
    	Call SpitPages("?", intAbsolutePage, intPageSize, intRecordCount, intPageCount)
    End Sub
    
    
    
    
    
    '================================================================'
    '    列表分页
    '================================================================'
    Sub SpitPages(strURL, intAbsolutePage, intPageSize, intRecordCount, intPageCount)
        If intPageCount <= 0 Or intRecordCount <= 0 Then Exit Sub
    	
    	Dim intLoop
    	
    	If intAbsolutePage > intPageCount Then intAbsolutePage = intPageCount
    	
    	Response.Write("<p id=""pages"">")
    	
    	Response.Write("页码:" & intAbsolutePage & "/" & intPageCount & "&nbsp;&nbsp;每页" & intPageSize & "(<a href=""" & strURL & "Page=" & intAbsolutePage & "&amp;PageSize=10"">10</a>/<a href=""" & strURL & "Page=" & intAbsolutePage & "&amp;PageSize=20"">20</a>/<a href=""" & strURL & "Page=" & intAbsolutePage & "&amp;PageSize=50"">50</a>/<a href=""" & strURL & "Page=" & intAbsolutePage & "&amp;PageSize=100"">100</a>)条记录&nbsp;&nbsp;共" & intRecordCount & "条记录")
    	
    	Response.Write("&nbsp;&nbsp;&nbsp;&nbsp;")	
    	
    	If intAbsolutePage > 1 Then
    	    Response.Write("<a href=""" & strURL & "Page=1&amp;PageSize=" & intPageSize & """>首页</a>&nbsp;&nbsp;")
    	    Response.Write("<a href=""" & strURL & "Page=" & intAbsolutePage - 1 & "&amp;PageSize=" & intPageSize & """>上一页</a>&nbsp;&nbsp;")
    	Else
    	    Response.Write("首页&nbsp;&nbsp;")
    	    Response.Write("上一页&nbsp;&nbsp;")
    	End If
    	
    	
    	'    本页之前两页
    	For intLoop = intAbsolutePage - 2 To intAbsolutePage - 1
    		If intLoop > 0 Then
    		    Response.Write("[<a href=""" & strURL & "Page="& intLoop & "&amp;PageSize=" & intPageSize & """>" & intLoop & "</a>]&nbsp;&nbsp;")
    		End If
    	Next
    	
    	'    当前页
    	Response.Write("<a href=""" & strURL & "Page=" & intAbsolutePage & "&amp;PageSize=" & intPageSize & """ class=""currentpage"">" & intAbsolutePage & "</a>&nbsp;&nbsp;")
    	
    	For intLoop = intAbsolutePage + 1 To intAbsolutePage + 2
    	    If intLoop < intPageCount Then
    		    Response.Write("[<a href=""" & strURL & "Page="& intLoop & "&amp;PageSize=" & intPageSize & """>" & intLoop & "</a>]&nbsp;&nbsp;")
    		End If
    	Next
    	
    	
    	If intAbsolutePage < intPageCount Then
    	    Response.Write("<a href=""" & strURL & "Page=" & intAbsolutePage + 1 & "&amp;PageSize=" & intPageSize & """>下一页</a>&nbsp;&nbsp;")
    	    Response.Write("<a href=""" & strURL & "Page=" & intPageCount & "&amp;PageSize=" & intPageSize & """>末页</a>&nbsp;&nbsp;")
    	Else
    	    Response.Write("下一页&nbsp;&nbsp;")
    	    Response.Write("末页&nbsp;&nbsp;")
    	End If
    	
    	Response.Write("&nbsp;&nbsp;")
    	
    	'    跳转
    	Response.Write("跳转到:第<input name=""page"" type=""input"" id=""page"" size=""4"" value=""" & intAbsolutePage & """ onmouseover=""this.select();"" onchange=""if (!isNaN(this.value)) {location.href = '" & strURL & "Page=' + this.value + '&amp;PageSize=" & intPageSize & "';};"" onkeydown=""if(event.keyCode == 13 && !isNaN(this.value) && this.focus) {location.href = '" & strURL & "Page=' + this.value + '&amp;PageSize=" & intPageSize & "';};"" />页")	
    	
    	Response.Write("</p>" & vbCrLf)
    	
    End Sub
    
    
    
    
    '================================================================'
    '    强制转换正整数
    '================================================================'
    Function CID(strS)
    '    转换为有效的 ID
    '    返回值类型:Integer (>=0)
        Dim intI
    	intI = 0
    	
        If IsNull(strS) Or strS = "" Then
    	    intI = 0
    	Else
    	    If Not IsNumeric(strS) Then
    		    intI = 0
    		Else
    		    Dim intk
    		    On Error Resume Next
    			intk = Abs(Clng(strS))
    			If Err.Number = 6 Then intk = 0  ''数据溢出
    			Err.Clear
    		    intI = intk
    		End If
    	End If
    	
    	CID = intI
    End Function
     
  6. shu_yu

    shu_yu New Member

    注册:
    2006-03-19
    帖子:
    355
    赞:
    0
    有通用的吧
     
  7. 9ychinaczy

    9ychinaczy New Member

    注册:
    2006-04-01
    帖子:
    3
    赞:
    0
  8. BoBo

    BoBo New Member

    注册:
    2005-09-29
    帖子:
    929
    赞:
    0
    其实DVBBS那个分页应该不错,不知道有没有人拆出来