自动生成表格,自动完成删除,编辑、填加、分页功能,自定义样式表头样式
代码用两个类来实现
一开始考虑得太多,功能想得太强大,通用性越强,asp类跑起来越慢,做到后来没兴趣,还有很多功能没有完成,如字段类型验证,显示图片、控件等,帖出代码供大这一起学习研究,有兴趣的可以将这些功能加上
示例:
set a = new DataGrid
'a.Connstr="Provider=SQLOLEDB.1;User ID=sa;Password=servser;Initial Catalog=temp_blue;Data Source=server;Connect Timeout=30;Auto Translate=True;Packet Size=4096;"
a.Connstr="Provider=Microsoft.Jet.OLEDB.4.0;"&" Data Source="&server.mappath("test.mdb") '连接ACCSS字符串
a.SQLString="select * from table1" '生成datagrid所显示的记录集的sql语句
a.isAddnew = 1 '是否可以填加新记录
a.Table = "table1" 'datagrid控制的主表
a.UniqueField = "ID" '标志字段,所有记录不重复整型即可
a.PagePosition = "down" '分页显示位置,up上面,down下面 updown上下 ,其它为不显示
a.pagesize = 5 '每页显示记录数
a.Pagenumber = 10 '显示页数
a.BorderColor="#ff0000" '默认为效果图显示
a.BackGround="#00ff00" '默认为效果图显示
a.BorderWidth=1 默认为1
a.
set b1 = new column
b1.Field = "id" '此列所绑定的数据库字段
b1.Title = "标志" '标题
b1.Align = "center" ' 对齐方式
a.AddColumn(b1) '把此列插入到datagrid
set b2 = new column
b2.Field="firstname"
b2.Title="姓"
a.AddColumn(b2)
set b3 = new column
b3.Field = "lastname"
b3.Title = "名"
a.AddColumn(b3)
set b4 = new column
b4.Field = "logintimes"
b4.Title = "登陆次数"
b4.ReadOnly = true '设为只读,不会出现在编辑框中和新增记录中
a.AddColumn(b4)
set b5 = new column
b5.Title="编辑"
b5.Columntype ="edit" '编辑列
b5.EditCommandText = "编辑" '编辑按钮文本
a.AddColumn(b5)
set b6 = new column
b6.align = "center"
b6.Width = 200
b6.Columntype = "delete"
b6.DeleteCommandText = "删除按钮"
b6.Title ="删除"
a.AddColumn(b6)
a.CreateGrid()
set b1 = nothing
set b2 = nothing
set b3 = nothing
set b4 = nothing
set b5 = nothing
set b6 = nothing
类文件如下:
<%Class DataGrid
Private pages
Private strSQLString
Public Connstr
Private Columns
Private index
Private strUniqueField,strTable
Private rs
Private strCellspacing,strCellpadding,strCssClass
Private strBorderColorDark,strBorderColorLight,strBackGroundColor
Private intBorderWidth
Private strHeadStyle,strHeadBackgroudColor
Private strStyle,strAlternateStyle
Private UniqueKey,dg_action,currPage
Private actionURL,pageURL,operationURL,formURL
Public PagePosition,Pagesize,Pagenumber
Public isAddnew
Private Sub Class_Initialize()
set Columns = Server.CreateObject("Scripting.Dictionary")
index = 0
Pagesize = 10
Pagenumber = 10
PagePosition = "updown"
strSQLString = Session("DSN")
uniquekey = Request("uniquekey")
dg_action = Request("dg_action")
currPage = Request("Page")
actionURL = Request.ServerVariables("Script_name") & "?page=" & currPage
if dg_action= "edit" then formURL = actionURL& "&dg_action=update&uniquekey="&uniquekey
operationURL = Request.ServerVariables("Script_name") & "?page=" & currPage& "&uniquekey=" & uniquekey
pageURL = Request.ServerVariables("Script_name")&"?1=1"
if currPage = "" or isnull(currPage) then currPage = 1
strBorderColorDark ="#f7f7f7"
strBorderColorLight = "#cccccc"
strBackgroundColor = "#f7f7f7"
strHeadBackgroudColor = "#F2F2F2"
intBorderWidth = 1
strAlternateStyle ="bgcolor=#f6f6f6"
isAddnew = 1
Set rs = Server.CreateObject("Adodb.Recordset")
End Sub
Private Sub Class_Terminate()
rs.close
set rs = nothing
set Columns = nothing
End Sub
Public Property Get SQLString()
SQLString = strSQLString
End Property
Public Property Let SQLString(Value)
strSQLString = Value
End Property
Public Property Let Style(Value)
strStyle = Value()
End Property
Public Property Get Style()
Style = strStyle
End Property
Public Property Let UniqueField(Value)
strUniqueField = lcase(Value)
End Property
Public Property Get UniqueField()
UniqueField = strUniqueField
End Property
Public Property Let Table(Value)
strTable = lcase(Value)
End Property
Public Property Get Table()
Table = strTable
End Property
Public Property Let DbConn(Value)
strConn = Value
End Property
Public Property Get Version()
Version = "1.0"
End Property
Public Property Let Cellspacing(Value)
strcellspacing = Value
End Property
Public Property Get Cellspacing()
Cellspacing = strcellspacing
End Property
Public Property Let cellpadding(Value)
strcellpadding = Value
End Property
Public Property Get cellpadding()
cellpadding = strCellspacing
End Property
Public Property Let CssClass(Value)
strCssClass = Value
End Property
Public Property Get CssClass()
CssClass = strCssClass
End Property
Public Property Let BorderColor(value)
strBorderColorDark = value
End Property
Public Property Get BorderColor()
BorderColor = strBorderColorDark
End Property
Public Property Let BackGround(value)
strBorderColorDark = value
strBackgroundColor = value
End Property
Public Property Get BackGround()
BackGround = strBorderColorLight
End Property
Public Property Let BorderWidth(value)
intBorderWidth = value
End Property
Public Property Get BorderWidth()
BorderWidth = intBorderWidth
End Property
Public Property Get nColumns(intIndex)
nkeys = Columns.Keys
nItems = Columns.Items
for i = 0 to Columns.Count - 1
if intIndex = nkeys(i) then
set tmp = nItems(i)
end if
next
set nColumns = tmp
End Property
Private Function page(totalpage,pagenumber,thisPage)
MinPage = thisPage - pagenumber/2
if MinPage <= 0 then MinPage = 1
'if MinPage + pagenumber/2 > totalpage then Maxpage = totalpage else Maxpage = MinPage + pagenumber
for i = MinPage to MinPage + pagenumber -1
if i <= totalpage then
if cint(thisPage)<> cint(i) then
strtemp = strtemp & "<a href="&pageURL&"&page=" & i &">" & i & "</a> "
else
strtemp = strtemp & i&" "
end if
else
page = strtemp
Exit Function
end if
Next
page = strtemp
End Function
Public Sub CreateGrid()