|
没有用正常的循环tr内循环td的方法,所以就没有计算最后一页的记录集数量。 但当记录集不足时也同样能够自动补空行空列,如有不足请指出,谢谢。 使用方法很简单:
复制代码 代码如下: <% showData("查询语名") Call pagehead(行数,列数) '------------------------------------------------------------------------------- '可以把下面的Response.Write()写到函数里面,看个人的爱好了。 Response.Write(FormatCRtable(表格宽度,表格高度)) Response.Write(PageFoot()) Call closeData() %>
函数如下:
复制代码 代码如下: <% '------------------------------------------------------------------------------- 'Copyright 2005 by Jorkin.All Rights Reserved '------------------------------------------------------------------------------- Public rs Public pageno,Cols,Rows,maxpageno,maxredcount,maxpagesize '------------------------------------------------------------------------------- Public Function showData(sqlstrings) Set rs=Server.CreateObject("ADODB.Recordset") rs.open sqlstrings,oconn,1,3 End Function Public Function closeData() rs.close Set rs=Nothing End Function '初始化分页 'MaxRows =最大行数 'MaxCols =最大列数 '------------------------------------------------------------------------------- Public Function PageHead(MaxRows,MaxCols) '------------------------------------------------------------------------------- Rows=MaxRows Cols=MaxCols maxpagesize=1 maxredcount=0 maxpageno=0 pageno=0 '------------------------------------------------------------------------------- maxredcount = rs.recordcount If maxredcount>0 then maxpagesize = Rows*Cols maxpageno = Cint((maxredcount+maxpagesize-1)/maxpagesize) rs.pagesize = maxpagesize pageno=Request("pageno") If IsEmpty(pageno) Or Not IsNumeric(pageno) Or CInt(pageno)<1 Or CInt(pageno)>Rs.Pagecount Then Pageno=1 End If rs.absolutePage=pageno End If On Error Resume Next End Function '分页函数尾 '无参数 '------------------------------------------------------------------------------- Public Function PageFoot() strr="<table width=""500"" border=""0"" cellpadding=""0"" cellspacing=""0"">" & VbCrLf strr=strr&" <tr>" & VbCrLf strr=strr&" <td valign=""top""><div align=""Right"">" '大于1页才会显示首页和上一页(可选) ' If pageno>1 Then strr=strr&"<a href=""?pageno=1"" title=""首页""><font face = Webdings>9</font></a>" strr=strr&" " strr=strr&"<a href=""?pageno="&pageno-1&""" title=""上一页""><font face = Webdings>7</font></a>" ' End If strr=strr&" "&pageno&" " '小于最大页数才会显示下一页和尾页(可选) ' If pageno<maxpageno Then strr=strr&"<a href=""?pageno="&pageno+1&""" title=""下一页""><font face = Webdings>8</font></a>" strr=strr&" " strr=strr&"<a href=""?pageno="&maxpageno&""" title=""""><font face = Webdings>:</font></a>" ' End If strr=strr&" " strr=strr&(pageno-1)*maxpagesize+1&"/"&maxredcount&"条记录" strr=strr&" " strr=strr&pageno&"/"&maxpageno&"页" strr=strr&"</div></td>" & VbCrLf strr=strr&" </tr>" & vbCrLf strr=strr&"</table>" PageFoot=strr End Function '进行行列格式化函数 'TableWidth =表格宽度 'TableHeight =表格高度(因浏览器不同可能无效) '------------------------------------------------------------------------------- Public Function FormatCRtable(TableWidth,TableHeight) Dim i,strr i=0 strr="" strr=strr&"<table width="""&TableWidth&""" border=""0"" cellspacing=""0"" cellpadding=""0"">" & vbCrLf strr=strr&" <tr>" & VbCrLf If maxredcount>0 Then Do While i<maxpagesize i=i+1 If Not Rs.eof Then strr=strr&" <td width="""&TableWidth/Cols&""" height="""&Tableheight/Rows&""">有记录则进行输出</td>" & vbCrLf Rs.movenext Else strr=strr&" <td width="""&TableWidth/Cols&""" height="""&Tableheight/Rows&""">记录集不足时补余</td>" & VbCrLf End If If i Mod Cols = 0 Then strr=strr&" </tr>" & VbCrLf strr=strr&" <tr>" & vbCrLf End If Loop Else strr=strr&"<td height="""&TableWidth&""" valign=""top"">目前没有记录集</td>" End if strr=strr&" </tr>" & VbCrLf strr=strr&"</table>" & VbCrLf FormatCRtable=strr End Function %> 代码还有很多不足,而且写的也不是很严谨,见笑了。 以后可以会改为Class 转自:http://jorkin.reallydo.com/article.asp?id=15 |
|