分页显示数据

本机希望设计一个分页显示订单表的页面,用户可以通过单击“上一页”、“下一页”来切换页面:

 

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参数的。


本页地址:http://www.foxtable.com/mobilehelp/topics/0035.htm