Generieren Sie automatisch Tabellen, führen Sie Lösch-, Bearbeitungs-, Füll- und Paging-Funktionen durch und passen Sie den Header-Stilcode
mithilfe von zwei Klassen
an.Zuerst dachte ich, dass die Funktion zu leistungsfähig sei. Je stärker die Vielseitigkeit, desto langsamer Wenn es losgeht, wird es am Ende weniger interessant. Es gibt noch viele Funktionen, die noch nicht abgeschlossen sind, wie z. B. die Überprüfung des Feldtyps, die Anzeige von Bildern, die Steuerung usw. Der Code wird für alle zum gemeinsamen Lernen und Lernen veröffentlicht. Interessierte können
Beispiele dieser Funktionen hinzufügen:
set a = new DataGrid
'a.Connstr="Provider=SQLOLEDB.1;Benutzer-ID=sa;Passwort=servser;Initial Catalog=temp_blue;Datenquelle=server;Verbindungszeitüberschreitung=30;Auto Translate=True;Paketgröße=4096;"
a.Connstr="Provider=Microsoft.Jet.OLEDB.4.0;"&" Data Source="&server.mappath("test.mdb") 'ACCSS-Zeichenfolge verbinden
a.SQLString="select * from table1" 'Generieren Sie die SQL-Anweisung für den vom Datagrid angezeigten Datensatz
a.isAddnew = 1 'Ob neue Datensätze hinzugefügt werden können
a.Table = "table1" 'Haupttabelle, gesteuert durch Datagrid
a.UniqueField = "ID" 'Flag-Feld, alle Datensätze dürfen keine Ganzzahlen wiederholen
a.PagePosition = "down" 'Seitenanzeigeposition, oben oben, unten unten, oben unten, oben und unten, andere werden nicht angezeigt
a.pagesize = 5 'Anzahl der Datensätze pro Seite anzeigen
a.Pagenumber = 10 'Seitennummer anzeigen
a.BorderColor="#ff0000" 'Standardmäßig wird die Anzeige gerendert
a.BackGround="#00ff00" 'Standardmäßig wird die Anzeige gerendert
a.BorderWidth=1 Der Standardwert ist 1
a.
set b1 = neue Spalte
b1.Field = "id" 'Das an diese Spalte gebundene Datenbankfeld
b1.Title = "Logo" 'Titel
b1.Align = "center" ' Ausrichtung
a.AddColumn(b1) 'Diese Spalte in das Datagrid einfügen
set b2 = neue Spalte
b2.Field="Vorname"
b2.Title="Nachname"
a.AddColumn(b2)
set b3 = neue Spalte
b3.Field = "Nachname"
b3.Title = "Name"
a.AddColumn(b3)
set b4 = neue Spalte
b4.Field = "Anmeldezeiten"
b4.Title = "Anzahl der Anmeldungen"
b4.ReadOnly = true 'Als schreibgeschützt festlegen und nicht im Bearbeitungsfeld und in neuen Datensätzen angezeigt
a.AddColumn(b4)
set b5 = neue Spalte
b5.Title="Bearbeiten"
b5.Columntype ="edit" 'Spalte bearbeiten
b5.EditCommandText = "Bearbeiten" 'Schaltflächentext bearbeiten
a.AddColumn(b5)
set b6 = neue Spalte
b6.align = "center"
b6.Breite = 200
b6.Columntype = "löschen"
b6.DeleteCommandText = „Schaltfläche „Löschen““
b6.Title="Löschen"
a.AddColumn(b6)
a.CreateGrid()
set b1 = nichts
setze b2 = nichts
setze b3 = nichts
setze b4 = nichts
setze b5 = nichts
setze b6 = nichts
Die Klassendatei lautet wie folgt:
<%Class DataGrid
Private Seiten
Privater strSQLString
PublicConnstr
Private Spalten
Privater Index
Privates strUniqueField,strTable
Privat rs
Privat strCellspacing, strCellpadding, strCssClass
Privat strBorderColorDark, strBorderColorLight, strBackGroundColor
Private intBorderWidth
Privat strHeadStyle, strHeadBackgroudColor
Privater strStyle, strAlternateStyle
Privater UniqueKey,dg_action,currPage
Private Aktions-URL, Seiten-URL, Operations-URL, Formular-URL
Öffentliche Seitenposition, Seitengröße, Seitennummer
Öffentlich ist Addnew
Private Sub Class_Initialize()
set Columns = Server.CreateObject("Scripting.Dictionary")
Index = 0
Seitengröße = 10
Seitenzahl = 10
PagePosition = "updown"
strSQLString = Session("DSN")
uniquekey = Request("uniquekey")
dg_action = Request("dg_action")
currPage = Request("Seite")
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"
Wenn currPage = "" oder isnull(currPage), dann ist currPage = 1
strBorderColorDark="#f7f7f7"
strBorderColorLight = "#cccccc"
strBackgroundColor = "#f7f7f7"
strHeadBackgroudColor = "#F2F2F2"
intBorderWidth = 1
strAlternateStyle="bgcolor=#f6f6f6"
isAddnew = 1
Setze rs = Server.CreateObject("Adodb.Recordset")
Sub beenden
Private Sub Class_Terminate()
rs.close
setrs=nichts
set Columns = nichts
Sub beenden
Öffentliche Eigenschaft Get SQLString()
SQLString = strSQLString
End-Eigenschaft
Öffentliche Eigenschaft Let SQLString(Value)
strSQLString = Wert
End-Eigenschaft
Stil der öffentlichen Immobilie (Wert)
strStyle = Value()
End-Eigenschaft
Öffentliches Eigentum Get Style()
Stil = strStyle
End-Eigenschaft
Öffentliches Eigentum Let UniqueField(Value)
strUniqueField = lcase(Wert)
End-Eigenschaft
Öffentliches Eigentum Get UniqueField()
UniqueField = strUniqueField
End-Eigenschaft
Vermietungstabelle für öffentliches Eigentum (Wert)
strTable = lcase(Wert)
End-Eigenschaft
Öffentliche Eigenschaft GetTable()
Tabelle = strTable
End-Eigenschaft
Öffentliches Eigentum Let DbConn(Value)
strConn = Wert
End-Eigenschaft
Öffentliches Eigentum Get Version()
Version = „1.0“
End-Eigenschaft
Öffentliche Eigenschaft Let Cellspacing(Value)
strcellspacing = Wert
End-Eigenschaft
Öffentliches Eigentum Get Cellspacing()
Zellenabstand = strcellspacing
End-Eigenschaft
Öffentliches Eigentum Let cellpadding(Value)
strcellpadding = Wert
End-Eigenschaft
Öffentliches Eigentum Cellpadding() abrufen
cellpadding = strCellspacing
End-Eigenschaft
Öffentliche Eigenschaft Let CssClass(Value)
strCssClass = Wert
End-Eigenschaft
Öffentliche Eigenschaft Get CssClass()
CssClass = strCssClass
End-Eigenschaft
Öffentliche Eigenschaft Let BorderColor(value)
strBorderColorDark = Wert
End-Eigenschaft
Öffentliche Eigenschaft GetBorderColor()
BorderColor = strBorderColorDark
End-Eigenschaft
Öffentliches Eigentum Let BackGround(value)
strBorderColorDark = Wert
strBackgroundColor = Wert
End-Eigenschaft
Öffentliches Eigentum Get BackGround()
BackGround = strBorderColorLight
End-Eigenschaft
Öffentliche Eigenschaft Let BorderWidth(value)
intBorderWidth = Wert
End-Eigenschaft
Öffentliche Eigenschaft GetBorderWidth()
BorderWidth = intBorderWidth
End-Eigenschaft
Öffentliche Eigenschaft Get nColumns(intIndex)
nkeys = Columns.Keys
nItems = Columns.Items
für i = 0 bis Columns.Count - 1
wenn intIndex = nkeys(i), dann
set tmp = nItems(i)
Ende wenn
nächste
setze nColumns = tmp
End-Eigenschaft
Private Funktionsseite (Gesamtseite, Seitennummer, diese Seite)
MinPage = thisPage – Seitennummer/2
Wenn MinPage <= 0, dann ist MinPage = 1
'Wenn MinPage + Seitennummer/2 > Gesamtseite, dann Maxpage = Gesamtseite, sonst Maxpage = MinPage + Seitennummer
für i = MinPage zu MinPage + Seitennummer -1
wenn i <= totalpage dann
if cint(thisPage)<> cint(i) then
strtemp = strtemp & "<a href="&pageURL&"&page=" & i &">" & i & "</a> "
anders
strtemp = strtemp & i&" "
Ende wenn
anders
page = strtemp
Exit-Funktion
Ende wenn
Nächste
page = strtemp
Funktion beenden
Öffentliches Sub CreateGrid()
nkeys = Columns.Keys
nItems = Columns.Items
Wenn dg_action="update" dann
dim strsql
strsql = "update "& table & " set "
dim j
j=0
Für i = 0 bis Index - 1
wenn nItems(i).Columntype<>"edit" und nItems(i).Columntype <> "delete" und nicht nItems(i).readonly und nItems(i).field<>uniquefield dann
Wenn j <> 0, dann strsql = strsql & ","
Wählen Sie den Fall nItems(i).DataType aus
Fall „Text“
strsql = strsql & nItems(i).field & "='" & Request(nItems(i).field)&"' "
Fall „number“, „int“, „bigint“, „tinyint“
strsql = strsql & nItems(i).field & "=" & Request(nItems(i).field) & " "
Fall „Datum“, „Uhrzeit“, „DatumUhrzeit“
strsql = strsql & nItems(i).field & "=convert(datetime,'" & Request(nItems(i).field)&"',102) "
Fall anders
strsql = strsql & nItems(i).field & "='" & Request(nItems(i).field)&"' "
Auswahl beenden
j=j+1
Ende wenn
Nächste
strsql = strsql & " where " & UniqueField &" = "& uniquekey
set rst = Server.CreateObject("adodb.recordset")
rst.Open strsql,connstr
'Zuerst.Schließen
set rst = nichts
set strsql = nichts
Ende wenn
Wenn dg_action="delete", dann
strsql = ""
strsql = "delete from " & table & " where " & UniqueField &" = "& uniquekey
Antwort.Strsql schreiben
set rst = Server.CreateObject("adodb.recordset")
rst.Open strsql,connstr
'Zuerst.Schließen
set rst = nichts
Ende wenn
WENN dg_action = "addnew" und isAddnew = 1 dann
'dim strsql
set rst = Server.CreateObject("adodb.recordset")
rst.open table,connstr,1,3,2
rst.addnew
j=0
Für i = 0 bis Index - 1
wenn nItems(i).Columntype<>"edit" und nItems(i).Columntype <> "delete" und nicht nItems(i).readonly und nItems(i).field<>uniquefield dann
Wenn j <> 0, dann strsql = strsql & ","
Wählen Sie den Fall nItems(i).DataType aus
Fall „Text“
rst(nItems(i).field) = Request(nItems(i).field)
Fall „number“, „int“, „bigint“, „tinyint“
rst(nItems(i).field) = Request(nItems(i).field)
Fall „Datum“, „Uhrzeit“, „DatumUhrzeit“
rst(nItems(i).field) = Request(nItems(i).field)
Fall anders
rst(nItems(i).field) = Request(nItems(i).field)
Auswahl beenden
j=j+1
Ende wenn
Nächste
erstes Update
set rst = nichts
Ende wenn
rs.Open strSQLString,connstr,1,1
strTable= "<table border=" & intBorderWidth & " bordercolordark=" & strBorderColorDark & " bordercolorlight=" & strbordercolorlight & "class=" &cssclass & " Cellspacing=0>" 'Stil hinzufügen
strTable = strTable & "<form action=" & formURL & " name=""gridform"" method=post>"
wenn PagePosition="up" oder PagePosition="updown" dann strTable = strTable & "<tr><td colspan="& index &">"& page(rs.PageCount,Pagenumber,currPage )&"</td>< /tr>"
strTable = strTable & "<tr bgcolor=" & strHeadBackgroudColor & ">"
für i = 0 bis Index - 1
if nItems(i).Title<>"" then
strTable = strTable & "<td " & nItems(i).HTMLstr & ">" & nItems(i).Title &"</td>"
anders
strTable = strTable & "<td " & nItems(i).HTMLstr & ">" & rs.Fields(i).Item.Name &"</td>"
Ende wenn
Nächste
strTable = strTable & "</tr>"
Wenn cint(currPage) > cint(rs.PageCount), dann currPage = rs.PageCount
intPage = Seitengröße
rs.PageSize = Seitengröße
rs.AbsolutePage = currPage
tun, während nicht rs.eof und intPage > 0
intPage = intPage - 1
dbuniquekey = rs(uniquefield)
Wenn intPage mod 2 dann
strTable = strTable & "<tr>"
Anders
strTable = strTable & "<tr "& strAlternateStyle &">"
Ende wenn
'response.Write len(dg_action)>0 and int(dbuniquekey) = int(uniquekey)
wenn dg_action = „edit“ und int(dbuniquekey) = int(uniquekey) dann
für i = 0 bis Index - 1
wenn nItems(i).Columntype<>"edit" und nItems(i).Columntype <> "delete" und nicht nItems(i).readonly und nItems(i).field<>uniquefield dann
strTable = strTable & "<td " & nItems(i).HTMLstr &"><input type=Text name=""" & rs.Fields(nItems(i).field).Name &""" value="" " & rs(nItems(i).field) &"""></td>"
anders
Fall auswählen lcase(nItems(i).Columntype)
Fall „Etikett“
strTable = strTable & "<td "& nItems(i).HTMLstr &">" & rs(nItems(i).field) &"</td>"
Koffer „Radio“
Fall „Bild“
Fall „Kontrollkästchen“
Fall „Textfeld“
strTable = strTable & "<td " & nItems(i).HTMLstr &"><input type=text name=""" & rs.Fields(i).Name &""" value=" & rs(nItems(i ).field) &"></td>"
Fall „Link“
Fall „bearbeiten“
if UniqueField="" then ErrorMsg="UniqueField nicht gesetzt"
wenn dg_action = "edit", dann
strTable = strTable & "<td "&nItems(i).HTMLstr &"><a href=""JavaScript:document.gridform.submit()"">"&nItems(i).UpdateCommandText&"</a> <a href ="&actionURL&">"&nItems(i).CancelCommandText&"</a></td>"
anders
strTable = strTable & "<td "&nItems(i).HTMLstr &"><a href="&actionURL&"&dg_action=edit&uniquekey=" & rs(UniqueField) &">"&nItems(i).EditCommandText&"</a>< /td>"
Ende wenn
Fall „löschen“
if UniqueField="" then ErrorMsg="UniqueField nicht gesetzt"
strTable = strTable & "<td "&nItems(i).HTMLstr &"><a href="&actionURL&"&dg_action=delete&uniquekey=" & rs(UniqueField) &">"&nItems(i).DeleteCommandText&"</a>< /td>"
Fall „Update“
Fall anders
strTable = strTable & "<td " & nItems(i).HTMLstr & ">" & rs(nItems(i).field) & "</td>"
Auswahl beenden
Ende wenn
Nächste
anders
für i = 0 bis Index - 1
Wählen Sie den Fall lcase(nItems(i).Columntype)
Fall „Etikett“
strTable = strTable & "<td " & nItems(i).HTMLstr & ">" & rs(nItems(i).field) &"</td>"
Koffer „Radio“
Fall „Bild“
Fall „Kontrollkästchen“
Fall „Textfeld“
strTable = strTable & "<td " & nItems(i).HTMLstr &"><input type=text value=" & rs(nItems(i).field) &"></td>"
Fall „Link“
Fall „bearbeiten“
if UniqueField="" then ErrorMsg="UniqueField nicht gesetzt"
strTable = strTable & "<td " & nItems(i).HTMLstr & "><a href=" & actionURL & "&dg_action=edit&uniquekey=" & rs(UniqueField) & ">" & nItems(i).EditCommandText & " </a></td>"
Fall „löschen“
if UniqueField="" then ErrorMsg="UniqueField nicht gesetzt"
strTable = strTable & "<td " & nItems(i).HTMLstr &"><a href=" & actionURL & "&dg_action=delete&uniquekey=" & rs(UniqueField) &">" & nItems(i).DeleteCommandText&"< /a></td>"
Fall „Update“
Fall anders
strTable = strTable & "<td " & nItems(i).HTMLstr &">" & rs(nItems(i).Field) & "</td>"
Auswahl beenden
Nächste
Ende wenn
„Ende wenn.“
rs.movenext
strTable = strTable & "</tr>"& vbcrlf
Schleife
wenn PagePosition="down" oder PagePosition="updown" dann strTable = strTable & "<tr><td colspan="& index &">"& page(rs.PageCount,Pagenumber,currPage )
'strTable =strTable&"<tr>"
für i = 0 bis Index - 1
wenn nItems(i).Columntype<>"edit" und nItems(i).Columntype <> "delete" und nicht nItems(i).readonly und nItems(i).field<>uniquefield dann
'strTable = strTable & "<td " & nItems(i).HTMLstr &"><input type=Text name=""" & rs.Fields(nItems(i).field).Name &"""></ td>"
anders
'strTable = strTable & "<td " & nItems(i).HTMLstr &"> </td>"
Ende wenn
nächste
strTable =strTable&"</tr>"
strTable = strTable & "</form></table>"
Wenn isAddnew = 1 dann
strTable = strTable & "<form action=""?dg_action=addnew"" name=""dgridadd"" method=""post""><table border=" & intBorderWidth & " bordercolordark=" & strBorderColorDark & " bordercolorlight=" & strbordercolorlight & " cellspaced=0><tr>"
für i = 0 bis Index - 1
wenn nItems(i).Columntype<>"edit" und nItems(i).Columntype <> "delete" und nicht nItems(i).readonly und nItems(i).field<>uniquefield dann
strTable = strTable & "<td " & nItems(i).HTMLstr &">" & rs.Fields(nItems(i).field).Name &"</td>"
anders
'strTable = strTable & "<td " & nItems(i).HTMLstr &">"&nItems(i).Title&"</td>"
Ende wenn
nächste
strTable = strTable & "<td rowspan=2><a href=""JavaScript:document.dgridadd.submit()"">Neu</a></td></tr><tr>"
für i = 0 bis Index - 1
wenn nItems(i).Columntype<>"edit" und nItems(i).Columntype <> "delete" und nicht nItems(i).readonly und nItems(i).field<>uniquefield dann
strTable = strTable & "<td " & nItems(i).HTMLstr &"><input type=Text name=""" & rs.Fields(nItems(i).field).Name &"""></td >" & vbcrlf
anders
'strTable = strTable & "<td " & nItems(i).HTMLstr &"> </td>"
Ende wenn
nächste
strTable = strTable &"</tr></table></form>"
Ende wenn
Response.Write strTable
Sub beenden
Öffentliche Sub-AddColumn(cColumn)
'set tem = neue Spalte
'tem = cColumn
'response.Write cColumn.ColumnHTMLstr
Spalten.Index hinzufügen,cColumn
Index = Index + 1
'Columns.Items(i)
Sub beenden
Unterricht beenden
Klassenspalte
Privater strType
Private strAlign
Privater strStyle
Privater Spaltentext
Private intWidth
Private intHight
Privates Feld
Privater strTitle
Privates strEvent
Private strCssClass
Privater strText
Privat strEditCommandText, strUpdateCommandText, strCancelCommandText, strDeleteCommandText
Private strRegExp
Privat strReadOnly
Privater strDataType
Öffentlicher MaxValue, MinValue, MaxLength, MinLength, IsEmpty, IsChar, IsNumber, isCharNumber, isDate, isEmail
Private Sub Class_Initialize()
ColumnType = "Text"
strEditCommandText = "BEARBEITEN"
strUpdateCommandText = "UPDATE"
strCancelCommandText = „ABBRECHEN“
strDeleteCommandText = "DELETE"
Sub beenden
Private Sub Class_Terminate()
Sub beenden
Öffentliche Eigenschaft Let Columntype(Value)
strType = lcase(Wert)
End-Eigenschaft
Öffentliche Eigenschaft Get Columntype()
ColumnType = strType
End-Eigenschaft
Öffentliches Eigentum vermietet Para(Wert)
Para=Wert
End-Eigenschaft
Öffentliches Eigentum Let ParaLink(Value)
ParaLink = Ersetzen(Wert,"{0}",Para)
End-Eigenschaft
Öffentliche Eigenschaft Let ControlName(Value)
ControlName = Wert
End-Eigenschaft
Stil der öffentlichen Immobilie (Wert)
strStyle = Wert
End-Eigenschaft
Öffentliches Eigentum Let Eventstr(Value)
strEvent = Wert
End-Eigenschaft
Öffentliches Eigentum Let Align(Value)
strAlign = Wert
End-Eigenschaft
Öffentliche Eigenschaft GetAlign()
Align = strAlign
End-Eigenschaft
Öffentliche Eigenschaft GetEventstr()
Eventstr = strEvent
End-Eigenschaft
Öffentliche Grundstücksvermietungsbreite (Wert)
intWidth = Wert
End-Eigenschaft
Feld für öffentliche Immobilienvermietung (Wert)
strField = lcase(Wert)
End-Eigenschaft
Öffentliches Eigentum Get Field()
Feld = strField
End-Eigenschaft
Titel der öffentlichen Immobilienvermietung (Wert)
Wenn value="", dann strTitle = strField, sonst strTitle = Value
End-Eigenschaft
Öffentliches Eigentum Get Title()
Wenn strTitle="", dann Title = strField, sonst Title = strTitle
End-Eigenschaft
Öffentliche Eigenschaft Let CssClass(Value)
strCssClass = Wert
End-Eigenschaft
Öffentliche Eigenschaft Get CssClass()
CssClass = strCssClass
End-Eigenschaft
Öffentliche Eigenschaft Let DataType(Value)
strDataType = lcase(Wert)
End-Eigenschaft
Öffentliche Eigenschaft Get DataType()
DataType = strDataType
End-Eigenschaft
Öffentliches Eigentum Let Text(Value)
Wählen Sie den Fallwert aus
Fall ""
strText = strType
Fall null
strText = strType
Fall anders
strText = Wert
Ende auswählen
End-Eigenschaft
Öffentliches Eigentum Get Text()
Text = strText
End-Eigenschaft
Öffentliches Eigentum Let ReadOnly(Value)
wenn value="" oder isnull(value), dann strReadOnly = False sonst strReadOnly = value
End-Eigenschaft
Öffentliches Eigentum Get ReadOnly()
ReadOnly = strReadOnly
End-Eigenschaft
Öffentliche Eigenschaft Let EditCommandText(Value)
strEditCommandText = Wert
End-Eigenschaft
Öffentliche Eigenschaft Get EditCommandText()
EditCommandText = strEditCommandText
End-Eigenschaft
Öffentliche Eigenschaft Let UpdateCommandText(Value)
strUpdateCommandText = Wert
End-Eigenschaft
Öffentliche Eigenschaft GetUpdateCommandText()
UpdateCommandText = strUpdateCommandText
End-Eigenschaft
Öffentliche Eigenschaft Let CancelCommandText(Value)
strCancelCommandText = Wert
End-Eigenschaft
Öffentliche Eigenschaft Get CancelCommandText()
CancelCommandText = strCancelCommandText
End-Eigenschaft
Öffentliche Eigenschaft Let DeleteCommandText(Value)
strDeleteCommandText = Wert
End-Eigenschaft
Öffentliche Eigenschaft Get DeleteCommandText()
DeleteCommandText = strDeleteCommandText
End-Eigenschaft
Öffentliches Eigentum Let RegExp(Value)
strRegExp = Wert
End-Eigenschaft
Öffentliches Eigentum Get RegExp()
RegExp = strRegExp
End-Eigenschaft
Öffentliches Eigentum Get HTMLstr()
tempstr = ""
if intWidth <> "" then tempstr = tempstr & " width=""" & intWidth & """"
if intHeight <> "" then tempstr = tempstr & " height =""" & intHeight & """"
if strStyle <> "" then tempstr = tempstr & " style=""" & strStyle & """"
Wenn strEvent <> "", dann tempstr = tempstr & " " & strEvent
if strAlign <> "" then tempstr = tempstr & " align=""" & strAlign & """"
HTMLstr = tempstr
End-Eigenschaft
Unterricht beenden
%>