长文章自动分页完美解决类。

xuStanly 2005-12-23 09:18:47

Class AutoPaging
public Splitchar '分页搜索标志,数组
public PagingString '分页字符串
public PagingSize '页面最大长度
public CurrentPage '当前页码
public DefaultRange '默认起始范围
public StepRange '步长
private Truncate '2维数组m,n。m0=页码、m1=起始字符、m2=结束字符,n=总页数
private intStart '开始位置
private intLen '截取长度
private tmpStr
private Range '起始范围

private Sub Class_Initialize()
Splitchar=array("<br>","<BR>","<Br>","<bR>")
DefaultRange=1
StepRange = 1
intStart = 0
intEnd = 0
End Sub

public Function getTotalPageCount() '返回总页数
if len(PagingString) mod PagingSize > 0 then
getTotalPageCount = int(len(PagingString) / PagingSize) + 1
else
getTotalPageCount = len(PagingString) / PagingSize
end if
End Function

public Sub OutputString
redim Truncate(2,getTotalPageCount())

For tmpI = 0 to getTotalPageCount()
Truncate(0,tmpI)=tmpI
Next

For tmpI = 1 to ubound(Truncate,2)
if Truncate(0,tmpI) = 1 then
Truncate(1,tmpI) = 1
else
Truncate(1,tmpI)=Truncate(1,tmpI - 1) + Truncate(2,tmpI - 1)
end if
Range = DefaultRange
Do while Range < PagingSize
tmpStr=right(mid(PagingString,Truncate(1,tmpI),PagingSize),Range)
For tmpInt=0 to ubound(Splitchar)
if instr(1,tmpStr,Splitchar(tmpInt)) > 0 then
Truncate(2,tmpI) = (PagingSize - (len(tmpStr) - instr(1,tmpStr,Splitchar(tmpInt)))) - 1
exit do
end if
Next
Range = Range + StepRange
Loop
if tmpI = Cint(CurrentPage) then
intStart = Truncate(1,tmpI)
intLen = Truncate(2,tmpI)
end if
next
if Cint(CurrentPage) = getTotalPageCount() then
response.write(mid(PagingString,intStart))
else
response.write(mid(PagingString,intStart,intLen))
end if
End Sub
End Class


应用示例

<%
……
rs.open "select title,content from news where newsid=" & newsid,conn
dim Title,Content,WordLength,Page
Title = rs(0)
Content = rs(1)
rs.close
WordLength = 3000
set paging=new autopaging
with paging
.pagingstring=Content
.pagingsize=WordLength
end with
TotalPage = paging.gettotalpagecount()
Page=request("page")
if Page="" or Cint(Page)<1 or not isnumeric(Page) then
Page=1
else
if Cint(Page) > TotalPage then
Page = TotalPage
end if
end if
paging.currentpage=Page
paging.outputstring
set paging=nothing
%>
<!--分页链接-->
<tr><td align="right" style="padding-right: 10">
<%
if TotalPage > 1 then
For i=1 to TotalPage
if i = Cint(Page) then
response.write("<b>" & i & "</b> ")
else
response.write("<a href=readnews.asp?page=" & i & ">[" & i & "]</a> ")
end if
Next
end if
%>
</td></tr>
……

今日草成,在本机测试20000余字的文章,分页正确。
如有不完善的地方,还请高手指教。
如果有朋友能将此类修改得更完善,请发扬开源精神,将代码贴出。
如用得很爽,请帮顶。
...全文
266 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
opolmzy 2006-01-08
  • 打赏
  • 举报
回复
收藏!测试先~~~~
ljlyy 2006-01-05
  • 打赏
  • 举报
回复
不错!顶一下。
xuStanly 2006-01-05
  • 打赏
  • 举报
回复
应用范例
http://www.chceg.com/readnews.asp?newsid=227&bigclassid=9&smallclassid=36&specialid=5

28,406

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧