我用ASP写的m行n列的函数,动态输出创建TABLE行列

时间:2021-05-18

没有用正常的循环tr内循环td的方法,所以就没有计算最后一页的记录集数量。
但当记录集不足时也同样能够自动补空行空列,如有不足请指出,谢谢。
使用方法很简单:

复制代码 代码如下:
<%
showData("查询语名")
Callpagehead(行数,列数)
'-------------------------------------------------------------------------------
'可以把下面的Response.Write()写到函数里面,看个人的爱好了。
Response.Write(FormatCRtable(表格宽度,表格高度))
Response.Write(PageFoot())
CallcloseData()
%>

函数如下:



复制代码 代码如下:
<%
'-------------------------------------------------------------------------------
'Copyright2005byJorkin.AllRightsReserved
'-------------------------------------------------------------------------------
Publicrs
Publicpageno,Cols,Rows,maxpageno,maxredcount,maxpagesize
'-------------------------------------------------------------------------------
PublicFunctionshowData(sqlstrings)
  Setrs=Server.CreateObject("ADODB.Recordset")
  rs.opensqlstrings,oconn,1,3
EndFunction
PublicFunctioncloseData()
  rs.close
  Setrs=Nothing
EndFunction
'初始化分页
'MaxRows=最大行数
'MaxCols=最大列数
'-------------------------------------------------------------------------------
PublicFunctionPageHead(MaxRows,MaxCols)
'-------------------------------------------------------------------------------
  Rows=MaxRows
  Cols=MaxCols
  maxpagesize=1
  maxredcount=0
  maxpageno=0
  pageno=0
'-------------------------------------------------------------------------------
  maxredcount=rs.recordcount
  Ifmaxredcount>0then
  maxpagesize=Rows*Cols
  maxpageno=Cint((maxredcount+maxpagesize-1)/maxpagesize)
  rs.pagesize=maxpagesize
  pageno=Request("pageno")
  IfIsEmpty(pageno)OrNotIsNumeric(pageno)OrCInt(pageno)<1OrCInt(pageno)>Rs.PagecountThen
  Pageno=1
  EndIf
  rs.absolutePage=pageno
  EndIf
  OnErrorResumeNext
EndFunction
'分页函数尾
'无参数
'-------------------------------------------------------------------------------
PublicFunctionPageFoot()
  strr="<tablewidth=""500""border=""0""cellpadding=""0""cellspacing=""0"">"&VbCrLf
  strr=strr&"<tr>"&VbCrLf
  strr=strr&"<tdvalign=""top""><divalign=""Right"">"
'大于1页才会显示首页和上一页(可选)
'Ifpageno>1Then
  strr=strr&"<ahref=""?pageno=1""title=""首页""><fontface=Webdings>9</font></a>"
  strr=strr&""
  strr=strr&"<ahref=""?pageno="&pageno-1&"""title=""上一页""><fontface=Webdings>7</font></a>"
'EndIf
  strr=strr&""&pageno&""
'小于最大页数才会显示下一页和尾页(可选)
'Ifpageno<maxpagenoThen
  strr=strr&"<ahref=""?pageno="&pageno+1&"""title=""下一页""><fontface=Webdings>8</font></a>"
  strr=strr&""
  strr=strr&"<ahref=""?pageno="&maxpageno&"""title=""""><fontface=Webdings>:</font></a>"
'EndIf
  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
EndFunction
'进行行列格式化函数
'TableWidth=表格宽度
'TableHeight=表格高度(因浏览器不同可能无效)
'-------------------------------------------------------------------------------
PublicFunctionFormatCRtable(TableWidth,TableHeight)
  Dimi,strr
  i=0
  strr=""
  strr=strr&"<tablewidth="""&TableWidth&"""border=""0""cellspacing=""0""cellpadding=""0"">"&vbCrLf
  strr=strr&"<tr>"&VbCrLf
  Ifmaxredcount>0Then
  DoWhilei<maxpagesize
  i=i+1
  IfNotRs.eofThen
  strr=strr&"<tdwidth="""&TableWidth/Cols&"""height="""&Tableheight/Rows&""">有记录则进行输出</td>"&vbCrLf
  Rs.movenext
  Else
  strr=strr&"<tdwidth="""&TableWidth/Cols&"""height="""&Tableheight/Rows&""">记录集不足时补余</td>"&VbCrLf
  EndIf
  IfiModCols=0Then
  strr=strr&"</tr>"&VbCrLf
  strr=strr&"<tr>"&vbCrLf
  EndIf
  Loop
  Else
  strr=strr&"<tdheight="""&TableWidth&"""valign=""top"">目前没有记录集</td>"
  Endif
  strr=strr&"</tr>"&VbCrLf
  strr=strr&"</table>"&VbCrLf
  FormatCRtable=strr
EndFunction
%>
代码还有很多不足,而且写的也不是很严谨,见笑了。
以后可以会改为Class
转自:http://jorkin.reallydo.com/article.asp?id=15

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章