分页显示数据
本机希望设计一个分页显示订单表的页面,用户可以通过单击“上一页”、“下一页”来切换页面:
HttpRequst事件的代码并不复杂,其中一些技巧请仔细体会:
Select
Case e.Path
Case "list.htm"
Dim
page As
Integer = 0
'默认page为0,显示第一页
Dim
pageRows As
Integer = 10
'每页10行
If e.GetValues.ContainsKey("page")
Then
'如果地址中有page参数
Integer.TryParse(e.GetValues("page"),
page)
'提取page参数
End If
Dim
StartRow As
Integer = page *
pageRows
'此页第一行
Dim EndRow
As Integer
= (page + 1)
* pageRows - 1
'此页最后一行
Dim lst
As List(of
DataRow) =
DataTables("订单").Select("","日期
Desc")
'按日期顺序显示
If StartRow
> lst.Count
-1 Then
e.WriteString("已经是最后一页!")
Return
End If
EndRow =
Math.Min(EndRow,
lst.Count -
1)
'这是必须的
Dim sb
As New
StringBuilder
Dim
nms() As
String = {"产品","客户","数量","单价","折扣","金额","日期"}
sb.AppendLine("<Table
border='1'>")
sb.AppendLine("<caption>订单浏览<caption></br>")
sb.Append("<tr>")
For Each
nm As
String In
nms
sb.Append("<td>"
& nm
& "</td>")
Next
sb.AppendLine("</tr>")
For r
As Integer
= StartRow To
EndRow
sb.Append("<tr>")
For Each
nm As
String In
nms
sb.Append("<td>"
& lst(r)(nm)
& "</td>")
Next
sb.AppendLine("</tr>")
Next
sb.AppendLine("</Table></br></br>")
If page
> 0 Then
sb.Append("<a
href='list.htm?page=" &
page - 1
&
"'>上一页</a>
")
End If
If
EndRow < lst.Count
-1 Then
sb.Append("<a
href='list.htm?page=" &
page + 1
&
"'>下一页
</a>" )
End If
e.WriteString(sb.ToString)
End
Select
上述代码合成的上一页、下一页链接地址包括了要显示的页面参数,例如:
http://127.0.0.1/list.htm?page=1
表示请求显示第二页(0表示第一页),HttpRequst事件提取出这个页面参数后,以表格形式将对应页面数据显示在用户浏览器上。
这种数据传递方式,之前我们已经介绍过,请参考:另一种数据提交方式,只是本节是通过GetValues属性获取page参数的。