浏览器大全:是一个提供流行浏览器教程、在线学习分享的学习平台!

在ASP 中完成ASP.Net 的DataGrid 技巧(转载)

自从用贯了.Net的DataGrid就再也懒得去用ASP画表格了,于是想了一个折中的办法,访照DataGrid的功能写了一个TBGrid 类,这样可以轻松的重用代码.比起每次都得重复劳动方便多了.希望能给用得到的人带去一些方便.用法很简单,看后面的例子便一目了然了.有什么不完善的地方希望大家有和我讨论.
<%
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Programming By Smartpig '
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Class TBGrid

public DataSource '数据源
public style '表格总风格
public HeadStyle '表头风格
public HeadItemStyle '表头单独风格
public itemStyle '单元格独立网络
public Columns '需要显示的列元素
public Alternate '是否交替风格
public AlternateStyle '偶数行风格
public NormalStyle '正常风格
public DefaultStyle '默认风格簇
public PageSize '页大小
public CurPage '当前页
public AllowPageing '是否分页
public PageingStyle '页数风格

Private Templates '自定义单元项

'内容之间的关系
'Columns.add "Field","HeadText"
'AddTemplate("HeadText",Template)
'itemStyle.add "Field","style:adsasd"
'DataSource(Columns.Keys(i))

Private Sub Class_Initialize ' 设置 Initialize 事件。
Set itemStyle = CreateObject("Scripting.Dictionary")
Set HeadItemStyle= CreateObject("Scripting.Dictionary")
Set Columns = CreateObject("Scripting.Dictionary")
Set Templates = CreateObject("Scripting.Dictionary")
Set DataSource = CreateObject("ADODB.Recordset")
Alternate = 0
End Sub

Private Sub Class_Terminate ' 设置 Terminate 事件。
Set itemStyle = Nothing
Set HeadItemStyle = Nothing
Set Columns = Nothing
Set DataSource = Nothing
End Sub

Private Sub InitTable()
'Set FieldsNum = DataSource.Fields.Count
'Set RowsNum = DataSource.RecordCount
if Columns.Count = 0 then
For i = 0 to DataSource.Fields.Count -1
Columns.add DataSource.Fields(i).Name,DataSource.Fields(i).Name
response.Write(DataSource.Fields(i).Name)
Next
end if

if IsEmpty(Style) and IsEmpty(NormalStyle) then
DefaultStyle = 1
end if

if PageSize = Empty then
PageSize = 10
end if

select Case DefaultStyle
Case 1
Style ="border=1 cellpadding=2 cellspaccing=0 borderColor=#000000 style=""Border-collapse:collapse;font-size:12px"""
Alternate = 1
HeadStyle = "Height=25 bgColor=#CCCCCC"
AlternateStyle = "bgColor=#EEEEEE height=20"
NormalStyle = "height=20"

Case Else
End Select

End sub

public Sub AddTemplate(ByVal ColumnName,ByVal Template)
Columns.add ColumnName,ColumnName
Templates.add ColumnName,Template
End Sub

public Sub Show()
InitTable()

Dim tableStr
Dim tdStart,tdEnd,tbStyle,tbContent
Dim curRow
Dim clm
Dim regEx,Match,Matches

tableStr = "<table " & style & ">" & vbCrLF

'Draw Table Head
Response.Write(tableStr)
Response.Write("<tr>")
for Each clm in Columns.Keys()
tbStyle = HeadStyle & " " & HeadItemStyle(clm)
tdStart = "<td " & tbStyle & ">"
tdEnd = "</td>"

Response.Write(tdStart)
Response.Write(Columns(clm))
Response.Write(tdEnd)
Next
Response.Write("</tr>" & vbCrLF)

'Draw Table items
curRow = 1
if AllowPageing <> Empty then
DataSource.PageSize = PageSize
else
DataSource.PageSize = DataSource.RecordCount
end if

if CurPage = Empty then
CurPage = 1
end if

if CurPage < 1 then
DataSource.AbsolutePage = 1
end if

if CurPage >= DataSource.PageCount then
DataSource.AbsolutePage = DataSource.PageCount
end if

if CurPage >= 1 and CurPage <= DataSource.PageCount then
DataSource.AbsolutePage = CurPage
end if

for curRow = 1 to DataSource.PageSize
if DataSource.EOF then
Exit For
end if

Response.Write("<tr>")
for Each clm in Columns.Keys()
if Alternate = 0 then
tbStyle = NormalStyle & " " & ItemStyle(clm)
else
if curRow mod 2 = 0 then
tbStyle = AlternateStyle & " " & ItemStyle(clm)
else
tbStyle = NormalStyle & " " & ItemStyle(clm)
end if
end if

tdStart = "<td " & tbStyle & ">"
tdEnd = "</td>"

if Templates(clm) = Empty then
tbContent = DataSource(clm)
else
tbContent = Templates(clm)
Set regEx = New RegExp
regEx.Pattern= "{[A-Za-z0-9_-]+}"
regEx.IgnoreCase = True
regEx.Global = True
Set Matches=regEx.Execute(Templates(clm))
For each match in matches
On Error Resume Next
tbContent = Replace(tbContent,Match.Value, _DataSource(Mid(Match.Value,2,Len(Match.Value)-2)),1)
Next

end if

Response.Write(tdStart)
Response.Write(tbContent)
Response.Write(tdEnd)
Next
Response.Write("</tr>" & vbCrLF)

DataSource.MoveNext
Next

'Draw Pageing Row
if DataSource.PageCount > 1 and LCase(pageingStyle) <> "none" then
Dim i
response.write("<tr>")
response.write("<td colspan=" & Columns.Count & " " & PageingStyle & ">")
for i=1 to DataSource.PageCount
if i <> CurPage then
response.write("<a href='" & Request.ServerVariables("SCRIPT_NAME") & "?page=" & i & "'>" )
end if
response.write(i)
if i <> CurPage then
response.write("</a>")
end if
response.write(" ")
next
response.write("</td></tr>" & vbCrLf)
end if

'Draw Table end
Response.Write("")

end sub

End Class

'users Like { UserID,LoginName,Password,RealName,Age,Gender,}
'initDB
'Rs.Open "Select * from users",Cn
'Dim tbGrid1
'Set tbGrid1 = New TBGrid
'Set tbGrid1.DataSource = Rs
'tbGrid1.Columns.add "LoginName","用户名"
'tbGrid1.ItemStyle.add "Password","align=right"
'tbGrid1.ItemStyle.add "修改","width=100"
'tbGrid1.AddTemplate "修改","<a href='aaa.asp?id={UserID}'><font color=red>{RealName}</font></a>"
'tbGrid1.Columns.add "Password","密码"
'tbGrid1.PageSize = 5
'tbGrid1.AllowPageing = true
'tbGrid1.PageingStyle = "align=right"
'tbGrid1.CurPage = CInt(Request("page"))
'tbGrid1.Show()
'CloseDB

%>

相关软件

2345加速浏览器官方版

2345加速浏览器官方版 | 56.2MB

2345加速浏览器官方版

新一代2345加速浏览器采用Chromium和IE双内核,主打极速与安全特性。基于Chromium深度定制,引入网页智能预加载技术,访问网页更快速..

QQ浏览器官方正式版

QQ浏览器官方正式版 | 49.67MB

QQ浏览器官方正式版

QQ浏览器秉承TT浏览器1-4系列方便易用的特点,但技术架构不同,交互和视觉表现也重新设计,采用Chromium内核+IE双内核,让浏览快速稳定...

百度浏览器最新版下载

百度浏览器最新版下载 | 13.3MB

百度浏览器最新版下载

q百度浏览器,是一款简洁轻快、智能懂你的浏览器。依靠百度强大的搜索平台,在满足用户浏览网页的基础上,它整合百度体系业务优势,带给用户更方便的浏览方式功能...

UC浏览器官方正式版

UC浏览器官方正式版 | 44.2MB

UC浏览器官方正式版

UC浏览器(UC Browser)是UC Mobile Limited在2004年8月开发的一款软件,分uc手机浏览器和uc浏览器电脑版。UC浏览器是全球使用量最大的第三方手机浏览器...

猎豹浏览器2022最新版下载

猎豹浏览器2022下载 | 45MB

猎豹浏览器2022最新版下载

猎豹安全浏览器对Chrome的Webkit内核进行了超过100项的技术优化,访问网页速度更快。其具有首创的智能切换引擎,动态选择内核匹配不同网页...

360安全浏览器官方版下载

360安全浏览器下载 | 21.4MB

360安全浏览器官方版下载

360安全浏览器拥有全国最大的恶意网址库,采用恶意网址拦截技术,可自动拦截挂马、欺诈、网银仿冒等恶意网址。独创沙箱技术,在隔离模式即使访问****也不会感染...