经常写代码,对于无聊的table、tr、td真是深恶痛绝,一遍又一遍编写着重复无聊的代码,昨天看《ASP3.0高级编程》时,看到作者的一个ASP Table组件,感觉实在很方便,组件需要环境,通常情况下,我们用虚拟主机的情况要多得多,所以就着这个思路,自己用类实现,测试了一下,感觉用着确实方便,也拿来分享,也欢迎网友改进,不过别忘记发我一份!

以下是实现后的效果预览:

让操作更便捷 ASPTable类

生成的代码有适当的缩进,还比较简单,以下是源码:

cls_table.asp

让操作更便捷 ASPTable类<%
让操作更便捷 ASPTable类
'shaoyun table类
让操作更便捷 ASPTable类'
time:2008/8/20 14:04
让操作更便捷 ASPTable类'
author:shaoyun
让操作更便捷 ASPTable类'
site:shaoyun.cnblogs.com  www.devjs.com
让操作更便捷 ASPTable类'
email:shaoyun at yeah.net
让操作更便捷 ASPTable类
Class cls_Table
让操作更便捷 ASPTable类
让操作更便捷 ASPTable类
Private m_RS,m_Version,m_ClassName,m_ColCount,m_TableStyle,m_HeaderStyle
让操作更便捷 ASPTable类
Dim m_TitleCols(),m_TextCols(),m_StyleCols()
让操作更便捷 ASPTable类
让操作更便捷 ASPTable类
Private Sub Class_Initialize()
让操作更便捷 ASPTable类    m_ClassName
="Shaoyun Table类"
让操作更便捷 ASPTable类    m_Version
="1.0"
让操作更便捷 ASPTable类    m_RS
= ""
让操作更便捷 ASPTable类    m_ColCount
=0
让操作更便捷 ASPTable类    m_HeaderStyle
=""
让操作更便捷 ASPTable类
End Sub
让操作更便捷 ASPTable类
让操作更便捷 ASPTable类
Private Sub Class_Terminate()
让操作更便捷 ASPTable类    
Set m_RS=Nothing
让操作更便捷 ASPTable类
End Sub
让操作更便捷 ASPTable类
让操作更便捷 ASPTable类
Public Property Get ClassName
让操作更便捷 ASPTable类    ClassName 
= m_ClassName
让操作更便捷 ASPTable类
End Property
让操作更便捷 ASPTable类
让操作更便捷 ASPTable类
Public Property Get Version
让操作更便捷 ASPTable类    Version 
= m_Version
让操作更便捷 ASPTable类
End Property
让操作更便捷 ASPTable类
让操作更便捷 ASPTable类
Public Property Let HeaderStyle(className)
让操作更便捷 ASPTable类    m_HeaderStyle 
= className
让操作更便捷 ASPTable类
End Property
让操作更便捷 ASPTable类
让操作更便捷 ASPTable类
Public Property Let TableStyle(className)
让操作更便捷 ASPTable类    m_TableStyle 
= className
让操作更便捷 ASPTable类
End Property
让操作更便捷 ASPTable类
让操作更便捷 ASPTable类
Public Function SetRS(adors)
让操作更便捷 ASPTable类    
Set m_RS=adors
让操作更便捷 ASPTable类
End Function
让操作更便捷 ASPTable类
让操作更便捷 ASPTable类
'addcol(显示标题,显示文本格式,单元格的样式)
让操作更便捷 ASPTable类
Public Function AddCol(displayName,colFormat,className)
让操作更便捷 ASPTable类    m_ColCount 
= m_ColCount + 1
让操作更便捷 ASPTable类    
Redim Preserve m_TitleCols(m_ColCount)
让操作更便捷 ASPTable类    
Redim Preserve m_TextCols(m_ColCount)
让操作更便捷 ASPTable类    
Redim Preserve m_StyleCols(m_ColCount)
让操作更便捷 ASPTable类    
让操作更便捷 ASPTable类    m_TitleCols(m_ColCount)
=displayName
让操作更便捷 ASPTable类    m_TextCols(m_ColCount)
=colFormat
让操作更便捷 ASPTable类    m_StyleCols(m_ColCount)
=className
让操作更便捷 ASPTable类
End Function
让操作更便捷 ASPTable类
让操作更便捷 ASPTable类
'获取生成的格式代码
让操作更便捷 ASPTable类
Public Function GetHTML()
让操作更便捷 ASPTable类    
Dim strHTML
让操作更便捷 ASPTable类    strHTML
=""
让操作更便捷 ASPTable类    strHTML
=strHTML & "<TABLE class=""" & m_TableStyle & """>" & vbCrLf
让操作更便捷 ASPTable类    strHTML
=strHTML & "<TR>" & vbCrLf
让操作更便捷 ASPTable类    
For i=1 to m_ColCount
让操作更便捷 ASPTable类        strHTML
=strHTML & Chr(9& "<TH class=""" & m_HeaderStyle & """>"
让操作更便捷 ASPTable类        strHTML
=strHTML & m_TitleCols(i) & "</TH>" & vbCrLf
让操作更便捷 ASPTable类    
Next
让操作更便捷 ASPTable类    strHTML
=strHTML & "</TR>" & vbCrLf
让操作更便捷 ASPTable类    
让操作更便捷 ASPTable类    
Dim strRowText
让操作更便捷 ASPTable类    
Do While Not m_RS.EOF
让操作更便捷 ASPTable类        strRowText
=""
让操作更便捷 ASPTable类        
For i=1 to m_ColCount
让操作更便捷 ASPTable类            strRowText
=strRowText & Chr(9& "<TD class=""" & m_StyleCols(i) & """>"
让操作更便捷 ASPTable类            strRowText
=strRowText & ExpandString(m_TextCols(i)) & "</TD>" & vbCrLf
让操作更便捷 ASPTable类        
Next
让操作更便捷 ASPTable类        strHTML
=strHTML & "<TR>" & vbCrLf & strRowText & "</TR>" & vbCrLf
让操作更便捷 ASPTable类        m_RS.movenext
让操作更便捷 ASPTable类    
Loop
让操作更便捷 ASPTable类    strHTML
=strHTML & "</TABLE>"
让操作更便捷 ASPTable类    GetHTML
=strHTML
让操作更便捷 ASPTable类
End Function
让操作更便捷 ASPTable类
让操作更便捷 ASPTable类
'分析格式字符串,替换标签
让操作更便捷 ASPTable类
Private Function ExpandString(sourceString)
让操作更便捷 ASPTable类    
If sourceString="" Then Exit Function
让操作更便捷 ASPTable类    
Dim tokens,newText,cnt
让操作更便捷 ASPTable类    newText
=sourceString
让操作更便捷 ASPTable类    tokens
=GetTokens(sourceString)
让操作更便捷 ASPTable类    
'Join(tokens,"")==""用于判断数组是否为空
让操作更便捷 ASPTable类
    If Join(tokens,"")<>"" Then
让操作更便捷 ASPTable类        cnt
=1
让操作更便捷 ASPTable类        
do while cnt<UBound(tokens)+1
让操作更便捷 ASPTable类            newText
=replace(newText,"{$" & tokens(cnt) & "$}",m_RS(tokens(cnt)))
让操作更便捷 ASPTable类            cnt
=cnt+1
让操作更便捷 ASPTable类        
Loop
让操作更便捷 ASPTable类    
End if
让操作更便捷 ASPTable类    ExpandString
=newText
让操作更便捷 ASPTable类
End Function
让操作更便捷 ASPTable类
让操作更便捷 ASPTable类
'获取字符串中的所有标签,以数组返回
让操作更便捷 ASPTable类
Private Function GetTokens(tokenString)
让操作更便捷 ASPTable类    
Dim regEx, Match, Matches,curIndex
让操作更便捷 ASPTable类    
Dim arrTokens()
让操作更便捷 ASPTable类    curIndex
=0
让操作更便捷 ASPTable类    
Set regEx = New RegExp
让操作更便捷 ASPTable类    regEx.Pattern 
= "\{\$\w+(\$\}){1}"
让操作更便捷 ASPTable类    regEx.IgnoreCase 
= True
让操作更便捷 ASPTable类    regEx.Global 
= True
让操作更便捷 ASPTable类    
Set Matches = regEx.Execute(tokenString)
让操作更便捷 ASPTable类    
For Each Match in Matches
让操作更便捷 ASPTable类        curIndex
=curIndex+1
让操作更便捷 ASPTable类        
Redim Preserve arrTokens(curIndex)
让操作更便捷 ASPTable类        arrTokens(curIndex) 
= Mid(Match.Value,3,len(Match.Value)-4)
让操作更便捷 ASPTable类    
Next
让操作更便捷 ASPTable类    GetTokens 
= arrTokens
让操作更便捷 ASPTable类
End Function
让操作更便捷 ASPTable类
让操作更便捷 ASPTable类
End Class
让操作更便捷 ASPTable类%
> 

用法如下:

让操作更便捷 ASPTable类<!--#include file="conn.asp"-->
让操作更便捷 ASPTable类
<!--#include file="cls_table.asp"-->
%>

相关文章: