您的位置:首页 > 编程语言 > ASP

在ASP 中实现ASP.Net 的DataGrid 功能

2008-11-10 19:49 316 查看
自从用贯了.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("</table>")

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

%>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐