分享
 
 
 

在ASP 中实现ASP.Net 的DataGrid 功能(转载)

王朝asp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

原作Blog地址:http://www.cnblogs.com/smartpig/ 自从用贯了.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

%>

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有