VB.Net 开发的长内容自动分页功能

来源:互联网 发布:电商系统java源代码 编辑:程序博客网 时间:2024/05/07 08:28

长内容即可以手动分页也可以自动分页。
采用自动分页功能,只需告诉计算机每页大约字数就可以了。
下面附源码,方便自己,也方便大家研究:
Public Class WebForm1
Inherits System.Web.UI.Page
Protected WithEvents Label1 As System.Web.UI.WebControls.Label
Protected WithEvents Label2 As System.Web.UI.WebControls.Label
Protected WithEvents Label3 As System.Web.UI.WebControls.Label
Protected WithEvents Label4 As System.Web.UI.WebControls.Label
#Region " Web
窗体设计器生成的代码 "
'
该调用是 Web 窗体设计器所必需的。
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
End Sub
Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN:
此方法调用是 Web 窗体设计器所必需的
'
不要使用代码编辑器修改它。
InitializeComponent()
End Sub
#End Region
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'
在此处放置初始化页的用户代码
pages()
End Sub
'
长内容分页
Sub pages()
Dim i, start, stops, t, stat, statt, pp, pagecount, pagesize, articleid As Integer
Dim pa, articletxt, articletext, contenttext, html As String
contenttext = "<p>aaaaaaa</p><p>bbbbbbbbbbbb</p><p>cccccccccccccccc</p>"
'
变量初始值
stat = 0
statt = 0
start = 0 '
开始查询的字符串位置,初始为0
stops = 0
pagesize = 2 '
定义每页至少显示字符串数
pagecount = 0
'
获得当前的页数
pa = Request.Params("page")
If (pa = "" Or IsDBNull(pa)) Then
pa = "1"
End If
pp = Convert.ToInt32(pa)
'
获得内容
articletxt = contenttext
'
判断页面的内容长度是否大于定义的每页至少显示字符串数
If (articletxt.Length >= pagesize) Then '
如果大于字符串数,则我们可以分页显示
t = articletxt.Length / pagesize '
获得大致的总页数
'
根据目前获得的页数循环
For i = 0 To t
'
如果查询开始位置到查询的范围超出整个内容的长度,那么就不用寻找断点(分页点);反之,查找
If (start + pagesize < articletxt.Length) Then
stat = articletxt.IndexOf("</p>", start + pagesize) '
查找</P>分页点的位置
'
如果找不到
'If (stat <= 0) Then
'stat = articletxt.IndexOf("</p>", start + pagesize) '
查找</p>分页点的位置;这里您可以自己设置分页点的判断
'End If
End If
'Response.Write("'" & stat & "'")
If (stat <= 0) Then
'
如果找不到分页点,说明不能分页,也就不需要做其他的劳动了;否则,就进行分页
'articletext = articletxt '
将结果付给要导出的变量
'Label1.Text = articletext & stat
'Exit Sub
Else
stops = stat '
分页点的位置也就作为这一页的终点位置
If (start + pagesize >= articletxt.Length) Then '
如果起始位置到查询的范围超出整个内容的长度,那么这一页的终点位置为内容的终点
stops = articletxt.Length
End If
If (pp = i + 1) Then '
如果是当前,那么输出当前页的内容
articletext = articletxt.Substring(start, stops - start) '
取内容的起始位置到终点位置这段字符串输出
Label1.Text = articletext
End If
start = stat '
将终点位置作为下一页的起始位置
pagecount = pagecount + 1 '
获得实际页总数
'Response.Write("-" & pagecount & "-")
End If
Next
End If
'
分页部分(这里就简单多了)
'
定义分页代码变量
If (pagecount > 1) Then '
当页数大于1的时候我们显示页数
'Response.Write(pp)
If (pp - 1 > 0) Then '
显示上一页,方便浏览
html += "<a href=?id=" & articleid & "&page=" & (pp - 1) & ">[
上一页]</a> "
Else
If pp = 1 Then
html += "[<font color=#cccccc>
上一页</font>] "
Else
html += "<a href=?id=" & articleid & "&page=" & (1) & ">[
上一页]</a> "
End If
End If
For i = 1 To pagecount
If (i = pp) Then '
如果是当前页,加粗显示
html += "<b>[" & i & "]</b> "
Else
html += "<a href=?id=" & articleid & "&page=" & i & ">[" & i & "]</a> "
End If
Next
If (pp + 1 > pagecount) Then '
显示下一页,方便浏览
If pp = pagecount Then
html += "[<font color=#cccccc>
下一页</font>] "
Else
html += "<a href=?id=" & articleid & "&page=" & (pagecount) & ">[
下一页]</a></p>"
End If
Else
html += "<a href=?id=" & articleid & "&page=" & (pp + 1) & ">[
下一页]</a></p>"
End If
End If
Label2.Text = html
End Sub
End Class