我用循环语句显示一个动态的8行2列表格(16条记录)
对其进行分页,也就是当显示到第17条记录的时候就开始换一页。
<%If rs_qyzs.recordcount>0 Then ' 记录集不为空则处理记录
rs_qyzs.pagesize = 16 ' 设置每页显示的记录数
num=rs_qyzs.recordcount ' 记录总数
pagenum=rs_qyzs.pagecount ' 页总数
page=request("page") ' 获取页码的原始信息
' 处理页码原始信息的开始!
If page <> "" then
page = cint(page)
if err.number <> 0 then
err.clear
page = 1
end if
if page < 1 then
page = 1
end if
else
page = 1
end if
if page*rs_qyzs.pagesize > num and not((page-1)*rs_qyzs.pagesize < num)then
page=1
end if
' 处理页码原始信息的结束!设置当前页码
rs_qyzs.absolutepage = page
%>
上面所写的是分页的代码
<% for i=1 to num %> 'num代表数据表里的记录总数
···显示的内容
<%if i mod 2 = 0 then%>
</tr><tr> '换行 显示出8行2列
<% end if %>
这样一页显示16条信息,但是如果有20条信息,第二页却始终无法显示?怎么解决这个换页?
參考答案:一看你使用</tr><tr>这个来换行就知道会出现这个问题了!
自己好好想想,用表格来实现矩阵显示,要考虑到什么!
当一行显示不完整时,应该怎么做,当只有一行且不完整时,应该怎么做!当最后一页时你就会碰到记录指针超标的错误。
循环的条件应该怎么控制,你那样做都只是把记录数完整化考虑!没有考虑到异常情况!
所以应该改用条件循环而不用计数循环!
while not rs.eof and i<pageSize 'pageSize是每页数
在第一时间应该放的是增行(<TR>),而不是补行!</TR>
所以在这里应该是
<tr>
然后再写出单元格
<td>数据</td>
此时应该记数加一 i=i+1
再做判断 if i mod 2 =0 then 补行</tr>
wend
然后出来了应该考虑的是什么呢?对了,应该在最后一行中,不完整,应该补单元格
那么就是,
if i mod 2 <> 0 then
<td></td></tr>
如果你这里用到的是多于2列的,那么这里补的单元格就应该是动态的!
if i mod cols <> 0 then 'cols是列数
<td colspan=<%=cols-(i mod cols)%> > </td></tr>