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

转载 2004年09月14日 12:47:00
None.gif<%
None.gif
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
None.gif'
            Programming By Smartpig                              '
None.gif'
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
None.gif

None.gifClass TBGrid
None.gif
None.gif    
public DataSource                '数据源
None.gif
    public style                    '表格总风格
None.gif
    public HeadStyle                '表头风格
None.gif
    public HeadItemStyle            '表头单独风格
None.gif
    public itemStyle                '单元格独立网络
None.gif
    public Columns                    '需要显示的列元素
None.gif
    public Alternate                '是否交替风格
None.gif
    public AlternateStyle            '偶数行风格
None.gif
    public NormalStyle                '正常风格
None.gif
    public DefaultStyle                '默认风格簇
None.gif
    public PageSize                    '页大小
None.gif
    public CurPage                    '当前页
None.gif
    public AllowPageing                '是否分页
None.gif
    public PageingStyle                '页数风格
None.gif
    
None.gif    
Private Templates                '自定义单元项
None.gif
    
None.gif    
'内容之间的关系
None.gif
    'Columns.add "Field","HeadText"
None.gif
    'AddTemplate("HeadText",Template)
None.gif
    'itemStyle.add "Field","style:adsasd"
None.gif
    'DataSource(Columns.Keys(i))
None.gif
    
None.gif    
Private Sub Class_Initialize   ' 设置 Initialize 事件。
None.gif
        Set itemStyle     = CreateObject("Scripting.Dictionary")
None.gif        
Set HeadItemStyle= CreateObject("Scripting.Dictionary")
None.gif        
Set Columns         = CreateObject("Scripting.Dictionary")
None.gif        
Set Templates     = CreateObject("Scripting.Dictionary")
None.gif        
Set DataSource     = CreateObject("ADODB.Recordset")
None.gif        Alternate     
= 0
None.gif    
End Sub
None.gif    
None.gif    
Private Sub Class_Terminate   ' 设置 Terminate 事件。
None.gif
        Set itemStyle    = Nothing
None.gif        
Set HeadItemStyle = Nothing
None.gif        
Set Columns        = Nothing
None.gif        
Set DataSource    = Nothing
None.gif    
End Sub
None.gif    
None.gif    
Private Sub InitTable()
None.gif        
'Set FieldsNum    = DataSource.Fields.Count
None.gif
        'Set RowsNum     = DataSource.RecordCount
None.gif
        if Columns.Count = 0 then
None.gif            
For i = 0 to DataSource.Fields.Count -1
None.gif                Columns.add DataSource.Fields(i).Name,DataSource.Fields(i).Name
None.gif                response.Write(DataSource.Fields(i).Name)
None.gif            
Next
None.gif        
end if
None.gif        
None.gif        
if IsEmpty(Style) and IsEmpty(NormalStyle) then
None.gif            DefaultStyle 
= 1
None.gif        
end if
None.gif        
None.gif        
if PageSize = Empty then
None.gif            PageSize 
= 10
None.gif        
end if
None.gif        
None.gif        
select Case DefaultStyle
None.gif            
Case 1
None.gif                Style                
="border=1 cellpadding=2 cellspaccing=0 borderColor=#000000 style=""Border-collapse:collapse;font-size:12px"""
None.gif
                Alternate            = 1
None.gif                HeadStyle            
= "Height=25 bgColor=#CCCCCC"
None.gif
                AlternateStyle        = "bgColor=#EEEEEE height=20"
None.gif
                NormalStyle            = "height=20"
None.gif
                
None.gif            
Case Else
None.gif        
End Select
None.gif                
None.gif    
End sub
None.gif    
None.gif    
public Sub AddTemplate(ByVal ColumnName,ByVal Template)
None.gif        Columns.add ColumnName,ColumnName
None.gif        Templates.add ColumnName,Template
None.gif    
End Sub
None.gif
None.gif    
public Sub Show()
None.gif        InitTable()
None.gif        
None.gif        
Dim tableStr
None.gif        
Dim tdStart,tdEnd,tbStyle,tbContent
None.gif        
Dim curRow
None.gif        
Dim clm
None.gif        
Dim regEx,Match,Matches
None.gif           
None.gif        tableStr 
= "<table " & style & ">" & vbCrLF
None.gif        
None.gif        
'Draw Table Head
None.gif
        Response.Write(tableStr)
None.gif        Response.Write(
"<tr>")
None.gif        
for Each clm in Columns.Keys()
None.gif            tbStyle 
= HeadStyle & " " & HeadItemStyle(clm)
None.gif            tdStart 
= "<td " & tbStyle & ">"
None.gif
            tdEnd = "</td>"
None.gif
            
None.gif            Response.Write(tdStart)
None.gif            Response.Write(Columns(clm))
None.gif            Response.Write(tdEnd)
None.gif        
Next
None.gif        Response.Write(
"</tr>" & vbCrLF)
None.gif        
None.gif        
'Draw Table items
None.gif
        curRow = 1
None.gif        
if AllowPageing <> Empty then
None.gif            DataSource.PageSize 
= PageSize
None.gif        
else
None.gif            DataSource.PageSize 
= DataSource.RecordCount
None.gif        
end if
None.gif        
None.gif        
if CurPage = Empty then
None.gif            CurPage 
= 1
None.gif        
end if
None.gif        
None.gif        
if CurPage < 1 then
None.gif            DataSource.AbsolutePage 
= 1
None.gif        
end if
None.gif        
None.gif         
if CurPage >= DataSource.PageCount then
None.gif            DataSource.AbsolutePage 
= DataSource.PageCount
None.gif        
end if
None.gif        
None.gif        
if CurPage >= 1 and CurPage <= DataSource.PageCount then
None.gif            DataSource.AbsolutePage 
= CurPage
None.gif        
end if
None.gif
None.gif        
for curRow = 1 to DataSource.PageSize
None.gif            
if DataSource.EOF then
None.gif                
Exit For
None.gif            
end if
None.gif                        
None.gif            Response.Write(
"<tr>")
None.gif            
for Each clm in Columns.Keys()
None.gif                
if Alternate = 0 then
None.gif                    tbStyle 
= NormalStyle & " " & ItemStyle(clm)
None.gif                
else
None.gif                    
if curRow mod 2 = 0 then
None.gif                        tbStyle 
= AlternateStyle & " " & ItemStyle(clm)
None.gif                    
else
None.gif                        tbStyle 
= NormalStyle & " " & ItemStyle(clm)
None.gif                    
end if
None.gif                
end if
None.gif                
None.gif                tdStart 
= "<td " & tbStyle & ">"
None.gif
                tdEnd = "</td>"
None.gif
                
None.gif                
if Templates(clm) = Empty then
None.gif                    tbContent 
= DataSource(clm)
None.gif                
else
None.gif                    tbContent 
= Templates(clm)
None.gif                    
Set regEx = New RegExp
None.gif                    regEx.Pattern
= "{[A-Za-z0-9_-]+}"
None.gif
                    regEx.IgnoreCase = True
None.gif                    regEx.Global 
= True
None.gif                    
Set Matches=regEx.Execute(Templates(clm))
None.gif                    
For each match in matches
None.gif                        
On Error Resume Next
None.gif                        tbContent 
= Replace(tbContent,Match.Value, _DataSource(Mid(Match.Value,2,Len(Match.Value)-2)),1
None.gif                    
Next
None.gif                                        
None.gif                
end if
None.gif            
None.gif                Response.Write(tdStart)
None.gif                Response.Write(tbContent)
None.gif                Response.Write(tdEnd)
None.gif            
Next
None.gif            Response.Write(
"</tr>" & vbCrLF)
None.gif            
None.gif            DataSource.MoveNext
None.gif        
Next
None.gif        
None.gif        
'Draw Pageing Row
None.gif
        if DataSource.PageCount > 1 and LCase(pageingStyle) <> "none" then
None.gif            
Dim i
None.gif            response.write(
"<tr>")
None.gif            response.write(
"<td colspan=" & Columns.Count & " " & PageingStyle & ">")
None.gif            
for i=1 to DataSource.PageCount
None.gif                
if i <> CurPage then
None.gif                    response.write(
"<a href='" & Request.ServerVariables("SCRIPT_NAME"& "?page=" & i & "'>" )
None.gif                
end if
None.gif                response.write(i)
None.gif                
if i <> CurPage then
None.gif                    response.write(
"</a>")
None.gif                
end if
None.gif                response.write(
" ")
None.gif            
next
None.gif            response.write(
"</td></tr>" & vbCrLf)
None.gif        
end if
None.gif        
None.gif        
'Draw Table end
None.gif
        Response.Write("</table>")
None.gif        
None.gif    
end sub
None.gif
None.gif
End Class
None.gif
None.gif
'users Like { UserID,LoginName,Password,RealName,Age,Gender,dot.gif}
None.gif'
initDB
None.gif'
Rs.Open "Select * from users",Cn
None.gif'
Dim tbGrid1
None.gif'
Set tbGrid1 = New TBGrid
None.gif'
Set tbGrid1.DataSource = Rs
None.gif'
tbGrid1.Columns.add "LoginName","用户名"
None.gif'
tbGrid1.ItemStyle.add "Password","align=right"
None.gif'
tbGrid1.ItemStyle.add "修改","width=100"
None.gif'
tbGrid1.AddTemplate "修改","<a href='aaa.asp?id={UserID}'><font color=red>{RealName}</font></a>"
None.gif'
tbGrid1.Columns.add "Password","密码"
None.gif'
tbGrid1.PageSize = 5
None.gif'
tbGrid1.AllowPageing = true
None.gif'
tbGrid1.PageingStyle = "align=right"
None.gif'
tbGrid1.CurPage = CInt(Request("page"))
None.gif'
tbGrid1.Show()
None.gif'
CloseDB
None.gif

None.gif%
>

为 ASP.NET Datagrid 创建自定义列

Marcie RobillardDatagridGirl.com 2003 年 9 月简介不得不承认,为 Microsoft® ASP.NET 编写 Datagrid 代码包括大量的重复工作。尽管我深...
  • 21aspnet
  • 21aspnet
  • 2004年10月24日 22:28
  • 1857

ASP.NET中利用DataGrid的自定义分页功能

ASP.NET中利用DataGrid的自定义分页功能 ASP.NET中利用DataGrid的自定义分页功能和存储过程结合实现高效分页 ASP.Net中的DataGrid有内置分页功能, 但是它...
  • u014739775
  • u014739775
  • 2014年05月12日 11:09
  • 1126

ASP.NET中使用DataGrid显示数据

 版本:.NET Framework 1.1 DataGrid是ASP.NET中用于显示table类型数据的一个功能强大的控件,使用DataGrid控件可以轻松实现数据的分页显示及修改,并且拥有多种显...
  • colin915gao
  • colin915gao
  • 2007年04月22日 14:41
  • 2536

Asp.Net中DataGrid的模版列(TemplateColumn)内容控制简单方法。

最近写了几个asp.net的项目。其中,Asp.Net的控件DataGrid使用的最多了,前几天需要一个功能,我研究了很长时间,发现一个方法,应该是最简单的实现。现表述如下。 DataGrid的htm...
  • TomMax
  • TomMax
  • 2004年12月16日 19:40
  • 3070

Asp.net中DataGrid控件的自定义分页

         使用实现起来虽然比较方便,但是效率不高,每次都需要读取所有页(整个记录集),而加载的只是其中一页,造成了资源的浪费,记录多又会使效率变得很低。下面通过DataGrid的自定义分页功能...
  • 21aspnet
  • 21aspnet
  • 2004年12月23日 09:48
  • 2258

如何使用asp:DataGrid中的HeaderTemplate中的控件

如何使用asp:DataGrid中的HeaderTemplate中的控件。 经常在DataGrid中添加CheckBox实现全(不)选功能。那么怎么得到 HeaderTemplate中的Check...
  • binzai325
  • binzai325
  • 2011年09月06日 10:26
  • 1871

巧用ASP.NET中的Web服务器控件

不知大家对ASP.NET中的Web服务器控件了解怎么样?本篇博客小编将为大家介绍一些小技巧,轻松使用控件。 我们知道Web控件分为四种:内部,复杂,列表和验证控件,那么这些控件具体都有哪些,具有什么...
  • hongwei15732623364
  • hongwei15732623364
  • 2016年07月13日 23:30
  • 401

asp.net 中一次性更新DATAGRID中所有记录

在asp.net中,如何一次性更新datagrid中的所有记录呢?可以用如下的方法,首先,要对DATAGRID中要更新的列建立模版列,比如:asp:datagrid id="dgPopularFAQs...
  • mdot
  • mdot
  • 2004年12月19日 10:00
  • 1409

asp.net总结之比较DataGrid和GridView

最开始看asp.net视频的时候,由于各种原因不能联网,视频中讲到的DataGrid没有在工具箱中找到,也没在意,因为我添加GridView后,发现都能实现.所以一直认为是因为vs版本的原因只是名字不...
  • jly4758
  • jly4758
  • 2013年11月27日 16:32
  • 8447

ASP.NET中Web DataGrid的使用指南(转自前沿设计网-找到这个真不容易啊!)

关键词:ASP.NET中Web DataGrid的使用指南 很久以前就想写一些关于DataGrid/DataList的东西,但是一直以来,一方面自感所学未深,另一方面,总觉无从下笔,一拖再拖,离刚开...
  • luqingshuai_eloong
  • luqingshuai_eloong
  • 2015年06月16日 17:31
  • 796
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在ASP 中实现ASP.Net 的DataGrid 功能
举报原因:
原因补充:

(最多只允许输入30个字)