Générer automatiquement des tableaux, compléter automatiquement les fonctions de suppression, d'édition, de remplissage et de pagination et personnaliser le
code de style d'en-tête à l'aide de deux classes
.Au début, j'y pensais trop et la fonction était trop puissante. Plus la classe asp était polyvalente, plus elle fonctionnait lentement. au début, moins il s'intéresse à la fin. Il reste encore de nombreuses fonctions qui ne sont pas terminées, comme la vérification du type de champ, l'affichage des images, les contrôles, etc. Le code est affiché pour que chacun puisse étudier et étudier ensemble. Ceux qui sont intéressés peuvent ajouter
des exemples de ces fonctions :
set a = new DataGrid
'a.Connstr="Provider=SQLOLEDB.1;ID utilisateur=sa;Mot de passe=servser;Catalogue initial=temp_blue;Source de données=serveur;Délai d'attente de connexion=30;Traduction automatique=True;Taille du paquet=4096;"
a.Connstr="Provider=Microsoft.Jet.OLEDB.4.0;"&" Data Source="&server.mappath("test.mdb") 'Connecter la chaîne ACCSS
a.SQLString="select * from table1" 'Générer l'instruction SQL pour le jeu d'enregistrements affiché par la grille de données
a.isAddnew = 1 'Si de nouveaux enregistrements peuvent être ajoutés
a.Table = "table1" 'Table principale contrôlée par la grille de données
a.UniqueField = "ID" 'Champ d'indicateur, tous les enregistrements ne doivent pas répéter des entiers
a.PagePosition = "down" 'Position d'affichage de la page, au-dessus du haut, en dessous du bas, haut en bas, haut et bas, les autres ne sont pas affichés
a.pagesize = 5 'Afficher le nombre d'enregistrements par page
a.Pagenumber = 10 'Afficher le numéro de page
a.BorderColor="#ff0000" 'La valeur par défaut est le rendu de l'affichage
a.BackGround="#00ff00" 'La valeur par défaut est le rendu de l'affichage
a.BorderWidth=1 La valeur par défaut est 1
a.
définir b1 = nouvelle colonne
b1.Field = "id" 'Le champ de base de données lié à cette colonne
b1.Titre = "Logo" 'Titre
b1.Align = "centre" ' Alignement
a.AddColumn(b1) 'Insérer cette colonne dans la grille de données
définir b2 = nouvelle colonne
b2.Field="prénom"
b2.Titre="Nom"
a.AddColumn(b2)
set b3 = nouvelle colonne
b3.Field = "nom"
b3.Titre = "Nom"
a.AddColumn(b3)
set b4 = nouvelle colonne
b4.Field = "heures de connexion"
b4.Titre = "Nombre de connexions"
b4.ReadOnly = true 'Défini en lecture seule et n'apparaîtra pas dans la zone d'édition ni dans les nouveaux enregistrements
a.AddColumn(b4)
set b5 = nouvelle colonne
b5.Titre="Modifier"
b5.Columntype ="edit" 'Modifier la colonne
b5.EditCommandText = "Modifier" 'Modifier le texte du bouton
a.AddColumn(b5)
set b6 = nouvelle colonne
b6.align = "centre"
b6.Largeur = 200
b6.Columntype = "supprimer"
b6.DeleteCommandText = "Bouton Supprimer"
b6.Titre="Supprimer"
a.AddColumn(b6)
a.CreateGrid()
set b1 = rien
définir b2 = rien
définir b3 = rien
définir b4 = rien
définir b5 = rien
définir b6 = rien
Le fichier de classe est le suivant :
<%Class DataGrid
Pages privées
strSQLString privée
PublicConnstr
Colonnes privées
Index privé
Privé strUniqueField, strTable
RS privés
strCellspacing privé, strCellpadding, strCssClass
Privé strBorderColorDark, strBorderColorLight, strBackGroundColor
IntBorderWidth privé
Privé strHeadStyle, strHeadBackgroudColor
strStyle privé, strAlternateStyle
Clé unique privée, dg_action, currPage
URL d'action privée, URL de page, URL d'opération, URL de formulaire
Position de la page publique, taille de la page, numéro de page
Public estAddnew
Sous-classe privée_Initialize()
set Columns = Server.CreateObject("Scripting.Dictionary")
indice = 0
Taille de la page = 10
Numéro de page = 10
PagePosition = "vers le haut"
strSQLString = Session("DSN")
clé unique = Requête("clé unique")
dg_action = Requête("dg_action")
currPage = Requête("Page")
actionURL = Request.ServerVariables("Script_name") & "?page=" & currPage
si dg_action= "edit" alors formURL = actionURL& "&dg_action=update&uniquekey="&uniquekey
opérationURL = Request.ServerVariables("Script_name") & "?page=" & currPage& "&uniquekey=" & uniquekey
pageURL = Request.ServerVariables("Script_name")&"?1=1"
si currPage = "" ou isnull(currPage) alors currPage = 1
strBorderColorDark="#f7f7f7"
strBorderColorLight = "#cccccc"
strBackgroundColor = "#f7f7f7"
strHeadBackgroudColor = "#F2F2F2"
intBorderWidth = 1
strAlternateStyle="bgcolor=#f6f6f6"
estAjoutenouveau = 1
Définir rs = Server.CreateObject("Adodb.Recordset")
Fin du sous-marin
Sous-classe privée_Terminate()
rs.fermer
setrs = rien
définir les colonnes = rien
Fin du sous-marin
Propriété publique Obtenir SQLString()
SQLString = strSQLString
Propriété de fin
Propriété publique Let SQLString(Value)
strSQLString = Valeur
Propriété de fin
Style de location de propriété publique (valeur)
strStyle = Valeur()
Propriété de fin
Propriété publique Obtenir le style()
Style = strStyle
Propriété de fin
Propriété publique Let UniqueField (Valeur)
strUniqueField = lcase (Valeur)
Propriété de fin
Propriété publique Obtenir UniqueField()
UniqueField = strUniqueField
Propriété de fin
Table de location de propriété publique (valeur)
strTable = lcase (Valeur)
Propriété de fin
Propriété publique GetTable()
Tableau = strTable
Propriété de fin
Propriété publique Let DbConn (Valeur)
strConn = Valeur
Propriété de fin
Propriété publique Obtenir la version()
Version = "1.0"
Propriété de fin
Propriété publique Let Cellspacing (Valeur)
strcellspacing = Valeur
Propriété de fin
Propriété publique Obtenir Cellpacing()
Espacement des cellules = espacement des cellules
Propriété de fin
Propriété publique Laisser cellpadding (Valeur)
strcellpadding = Valeur
Propriété de fin
Propriété publique Obtenir cellpadding()
cellpadding = strCellspacing
Propriété de fin
Propriété publique Let CssClass (Valeur)
strCssClass = Valeur
Propriété de fin
Propriété publique Obtenir CssClass()
CssClass = strCssClass
Propriété de fin
Propriété publique Let BorderColor (valeur)
strBorderColorDark = valeur
Propriété de fin
Propriété publique GetBorderColor()
BorderColor = strBorderColorDark
Propriété de fin
Propriété publique Let BackGround (valeur)
strBorderColorDark = valeur
strBackgroundColor = valeur
Propriété de fin
Propriété publique Get BackGround()
BackGround = strBorderColorLight
Propriété de fin
Propriété publique Laissez BorderWidth (valeur)
intBorderWidth = valeur
Propriété de fin
Propriété publique GetBorderWidth()
BorderWidth = intBorderWidth
Propriété de fin
Propriété publique Obtenir nColumns (intIndex)
nkeys = Colonnes.Clés
nItems = Colonnes.Items
pour i = 0 à Columns.Count - 1
si intIndex = nkeys(i) alors
définir tmp = nItems(i)
finir si
suivant
définir nColonnes = tmp
Propriété de fin
Page de fonction privée (page totale, numéro de page, cette page)
MinPage = cettePage - numéro de page/2
si MinPage <= 0 alors MinPage = 1
'si MinPage + numéro de page/2 > page totale alors Maxpage = page totale sinon Maxpage = MinPage + numéro de page
pour i = MinPage à MinPage + numéro de page -1
si je <= page totale alors
si cint(thisPage)<> cint(i) alors
strtemp = strtemp & "<a href="&pageURL&"&page=" & i &">" & i & "</a> "
autre
strtemp = strtemp & je&" "
finir si
autre
page = strtemp
Fonction de sortie
finir si
Suivant
page = strtemp
Fonction de fin
Sous-public CreateGrid()
nkeys = Colonnes.Clés
nItems = Colonnes.Items
Si dg_action="update" alors
faible strsql
strsql = "mettre à jour" & table & "set"
faible j
j=0
Pour i = 0 à index - 1
si nItems(i).Columntype<>"edit" et nItems(i).Columntype <> "delete" et non nItems(i).readonly et nItems(i).field<>uniquefield alors
si j <> 0 alors strsql = strsql & ","
Sélectionnez le cas nItems(i).DataType
Cas "texte"
strsql = strsql & nItems(i).field & "='" & Request(nItems(i).field)&"' "
Cas "numéro", "int", "bigint", "tinyint"
strsql = strsql & nItems(i).field & "=" & Request(nItems(i).field) & " "
Cas "date", "heure", "dateheure"
strsql = strsql & nItems(i).field & "=convert(datetime,'" & Request(nItems(i).field)&"',102) "
Autre cas
strsql = strsql & nItems(i).field & "='" & Request(nItems(i).field)&"' "
Fin de la sélection
j=j+1
Terminer si
Suivant
strsql = strsql & " où " & UniqueField &" = "& clé unique
set premier = Server.CreateObject("adodb.recordset")
rst.Ouvrir strsql,connstr
'd'abord.Fermer
définir en premier = rien
définir strsql = rien
Terminer si
Si dg_action="delete" alors
strsql = ""
strsql = "supprimer de " & table & " où " & UniqueField &" = "& uniquekey
réponse.Écrivez strsql
set premier = Server.CreateObject("adodb.recordset")
rst.Ouvrir strsql,connstr
'd'abord.Fermer
définir en premier = rien
Terminer si
SI dg_action = "addnew" et isAddnew = 1 alors
'dim strsql
set premier = Server.CreateObject("adodb.recordset")
table rst.open,connstr,1,3,2
d'abord.ajouternouveau
j=0
Pour i = 0 à index - 1
si nItems(i).Columntype<>"edit" et nItems(i).Columntype <> "delete" et non nItems(i).readonly et nItems(i).field<>uniquefield alors
si j <> 0 alors strsql = strsql & ","
Sélectionnez le cas nItems(i).DataType
Cas "texte"
rst(nItems(i).field) = Demande(nItems(i).field)
Cas "numéro", "int", "bigint", "tinyint"
rst(nItems(i).field) = Demande(nItems(i).field)
Cas "date", "heure", "dateheure"
rst(nItems(i).field) = Demande(nItems(i).field)
Autre cas
rst(nItems(i).field) = Demande(nItems(i).field)
Fin de la sélection
j=j+1
Terminer si
Suivant
première mise à jour
définir en premier = rien
Terminer si
rs.Open strSQLString,connstr,1,1
strTable= "<table border=" & intBorderWidth & " bordercolordark=" & strBorderColorDark & " bordercolorlight=" & strbordercolorlight & "class=" &cssclass & " cellpacing=0>" 'Ajouter un style
strTable = strTable & "<form action=" & formURL & " name=""gridform"" method=post>"
si PagePosition="up" ou PagePosition="updown" alors strTable = strTable & "<tr><td colspan="& index &">"& page(rs.PageCount,Pagenumber,currPage )&"</td>< /tr>"
strTable = strTable & "<tr bgcolor=" & strHeadBackgroudColor & ">"
pour i = 0 à index - 1
si nItems(i).Titre<>"" alors
strTable = strTable & "<td " & nItems(i).HTMLstr & ">" & nItems(i).Titre &"</td>"
autre
strTable = strTable & "<td " & nItems(i).HTMLstr & ">" & rs.Fields(i).Item.Name &"</td>"
finir si
Suivant
strTable = strTable & "</tr>"
si cint(currPage) > cint(rs.PageCount) alors currPage = rs.PageCount
intPage = Taille de la page
rs.PageSize = taille de la page
rs.AbsolutePage = currPage
faire sans rs.eof et intPage > 0
intPage = intPage - 1
dbuniquekey = rs (champ unique)
Si intPage mod 2 alors
strTable = strTable & "<tr>"
Autre
strTable = strTable & "<tr "& strAlternateStyle &">"
Terminer si
'response.Write len(dg_action)>0 et int(dbuniquekey) = int(uniquekey)
si dg_action ="edit" et int(dbuniquekey) = int(uniquekey) alors
pour i = 0 à index - 1
si nItems(i).Columntype<>"edit" et nItems(i).Columntype <> "delete" et non nItems(i).readonly et nItems(i).field<>uniquefield alors
strTable = strTable & "<td " & nItems(i).HTMLstr &"><input type=Text name=""" & rs.Fields(nItems(i).field).Name &""" value="" " & rs(nItems(i).field) &"""></td>"
autre
Sélectionnez le cas lcase(nItems(i).Columntype)
Cas "étiquette"
strTable = strTable & "<td "& nItems(i).HTMLstr &">" & rs(nItems(i).field) &"</td>"
Cas "radio"
Cas "image"
Cas "case à cocher"
Cas "zone de texte"
strTable = strTable & "<td " & nItems(i).HTMLstr &"><input type=text name=""" & rs.Fields(i).Name &""" value=" & rs(nItems(i ).champ) &"></td>"
Cas "lien"
Cas "modifier"
si UniqueField="" alors ErrorMsg="UniqueField non défini"
si dg_action = "modifier" alors
strTable = strTable & "<td "&nItems(i).HTMLstr &"><a href=""JavaScript:document.gridform.submit()"">"&nItems(i).UpdateCommandText&"</a> <a href ="&actionURL&">"&nItems(i).CancelCommandText&"</a></td>"
autre
strTable = strTable & "<td "&nItems(i).HTMLstr &"><a href="&actionURL&"&dg_action=edit&uniquekey=" & rs(UniqueField) &">"&nItems(i).EditCommandText&"</a>< /td>"
finir si
Cas "supprimer"
si UniqueField="" alors ErrorMsg="UniqueField non défini"
strTable = strTable & "<td "&nItems(i).HTMLstr &"><a href="&actionURL&"&dg_action=delete&uniquekey=" & rs(UniqueField) &">"&nItems(i).DeleteCommandText&"</a>< /td>"
Cas "mise à jour"
Autre cas
strTable = strTable & "<td " & nItems(i).HTMLstr & ">" & rs(nItems(i).field) & "</td>"
Fin de la sélection
finir si
Suivant
autre
pour i = 0 à index - 1
sélectionnez le cas lcase(nItems(i).Columntype)
Cas "étiquette"
strTable = strTable & "<td " & nItems(i).HTMLstr & ">" & rs(nItems(i).field) &"</td>"
Cas "radio"
Cas "image"
Cas "case à cocher"
Cas "zone de texte"
strTable = strTable & "<td " & nItems(i).HTMLstr &"><input type=text value=" & rs(nItems(i).field) &"></td>"
Cas "lien"
Cas "modifier"
si UniqueField="" alors ErrorMsg="UniqueField non défini"
strTable = strTable & "<td " & nItems(i).HTMLstr & "><a href=" & actionURL & "&dg_action=edit&uniquekey=" & rs(UniqueField) & ">" & nItems(i).EditCommandText & " </a></td>"
Cas "supprimer"
si UniqueField="" alors ErrorMsg="UniqueField non défini"
strTable = strTable & "<td " & nItems(i).HTMLstr &"><a href=" & actionURL & "&dg_action=delete&uniquekey=" & rs(UniqueField) &">" & nItems(i).DeleteCommandText&"< /a></td>"
Cas "mise à jour"
Autre cas
strTable = strTable & "<td " & nItems(i).HTMLstr &">" & rs(nItems(i).Field) & "</td>"
Fin de la sélection
Suivant
Terminer si
'Fin si
rs.movenext
strTable = strTable & "</tr>"& vbcrlf
boucle
si PagePosition="down" ou PagePosition="updown" alors strTable = strTable & "<tr><td colspan="& index &">"& page(rs.PageCount,Pagenumber,currPage )
'strTable =strTable&"<tr>"
pour i = 0 à index - 1
si nItems(i).Columntype<>"edit" et nItems(i).Columntype <> "delete" et non nItems(i).readonly et nItems(i).field<>uniquefield alors
'strTable = strTable & "<td " & nItems(i).HTMLstr &"><input type=Text name=""" & rs.Fields(nItems(i).field).Name &"""></ td>"
autre
'strTable = strTable & "<td " & nItems(i).HTMLstr &"> </td>"
finir si
suivant
strTable =strTable&"</tr>"
strTable = strTable & "</form></table>"
Si isAddnew = 1 alors
strTable = strTable & "<form action=""?dg_action=addnew"" name=""dgridad"" method=""post""><table border=" & intBorderWidth & " bordercolordark=" & strBorderColorDark & " bordercolorlight= " & strbordercolorlight & " cellpacing=0><tr>"
pour i = 0 à index - 1
si nItems(i).Columntype<>"edit" et nItems(i).Columntype <> "delete" et non nItems(i).readonly et nItems(i).field<>uniquefield alors
strTable = strTable & "<td " & nItems(i).HTMLstr &">" & rs.Fields(nItems(i).field).Name &"</td>"
autre
'strTable = strTable & "<td " & nItems(i).HTMLstr &">"&nItems(i).Titre&"</td>"
finir si
suivant
strTable = strTable & "<td rowspan=2><a href=""JavaScript:document.dgridadd.submit()"">Nouveau</a></td></tr><tr>"
pour i = 0 à index - 1
si nItems(i).Columntype<>"edit" et nItems(i).Columntype <> "delete" et non nItems(i).readonly et nItems(i).field<>uniquefield alors
strTable = strTable & "<td " & nItems(i).HTMLstr &"><input type=Text name=""" & rs.Fields(nItems(i).field).Name &"""></td >" & vbcrlf
autre
'strTable = strTable & "<td " & nItems(i).HTMLstr &"> </td>"
finir si
suivant
strTable = strTable &"</tr></table></form>"
Terminer si
Réponse.Write strTable
Fin du sous-marin
Sous-public AddColumn (cColumn)
'set tem = nouvelle colonne
'tem = cColonne
'response.Write cColumn.ColumnHTMLstr
Colonnes.Ajouter un index,cColonne
indice = indice + 1
'Colonnes.Articles(i)
Fin du sous-marin
Fin du cours
Colonne de classe
Type de str privé
StrAlign privé
Style de str privé
Texte de colonne privé
Largeur int privée
Hauteur d'entrée privée
Champ privé
Titre de la chaîne privée
Événement privé
Classe strCss privée
Texte str privé
Privé strEditCommandText, strUpdateCommandText, strCancelCommandText, strDeleteCommandText
strRegExp privée
strReadOnly privé
strDataType privé
Public MaxValue, MinValue, MaxLength, MinLength, IsEmpty, IsChar, IsNumber, isCharNumber, isDate, isEmail
Sous-classe privée_Initialize()
Type de colonne = "Texte"
strEditCommandText = "MODIFIER"
strUpdateCommandText = "MISE À JOUR"
strCancelCommandText = "ANNULER"
strDeleteCommandText = "SUPPRIMER"
Fin du sous-marin
Sous-classe privée_Terminate()
Fin du sous-marin
Propriété publique Let Columntype (Valeur)
strType = lcase (Valeur)
Propriété de fin
Propriété publique Obtenir le type de colonne()
Type de colonne = strType
Propriété de fin
Propriété publique Let Para (Valeur)
Para=Valeur
Propriété de fin
Propriété publique Laisser ParaLink (Valeur)
ParaLink = Remplacer(Valeur,"{0}",Para)
Propriété de fin
Propriété publique Let ControlName (Valeur)
NomContrôle = Valeur
Propriété de fin
Style de location de propriété publique (valeur)
strStyle = Valeur
Propriété de fin
Propriété publique Let Eventstr (Valeur)
strEvent = Valeur
Propriété de fin
Propriété publique Laisser aligner (Valeur)
strAlign = Valeur
Propriété de fin
Propriété publique GetAlign()
Aligner = strAlign
Propriété de fin
Propriété publique GetEventstr()
Eventstr = strEvent
Propriété de fin
Propriété publique Laissez la largeur (valeur)
intWidth = Valeur
Propriété de fin
Champ de location de propriété publique (valeur)
strField = lcase (Valeur)
Propriété de fin
Propriété publique Obtenir le champ()
Champ = strField
Propriété de fin
Titre de location de propriété publique (valeur)
si valeur="" alors strTitle = strField sinon strTitle = Valeur
Propriété de fin
Propriété publique Obtenir le titre()
si strTitle="" alors Titre = strField sinon Titre = strTitle
Propriété de fin
Propriété publique Let CssClass (Valeur)
strCssClass = Valeur
Propriété de fin
Propriété publique Obtenir CssClass()
CssClass = strCssClass
Propriété de fin
Propriété publique Let DataType (Valeur)
strDataType = lcase (Valeur)
Propriété de fin
Propriété publique Obtenir DataType()
Type de données = strType de données
Propriété de fin
Propriété publique Let Text (Valeur)
sélectionner la valeur du cas
cas ""
strTexte = strType
cas nul
strTexte = strType
cas d'autre
strTexte = Valeur
fin de la sélection
Propriété de fin
Propriété publique Obtenir le texte()
Texte = strTexte
Propriété de fin
Propriété publique Let ReadOnly (Valeur)
si value="" ou isnull(value) alors strReadOnly = False sinon strReadOnly = value
Propriété de fin
Propriété publique Get ReadOnly()
ReadOnly = strReadOnly
Propriété de fin
Propriété publique Let EditCommandText(Value)
strEditCommandText = Valeur
Propriété de fin
Propriété publique Obtenir EditCommandText()
EditCommandText = strEditCommandText
Propriété de fin
Propriété publique Let UpdateCommandText (Valeur)
strUpdateCommandText = Valeur
Propriété de fin
Propriété publique GetUpdateCommandText()
UpdateCommandText = strUpdateCommandText
Propriété de fin
Propriété publique Let CancelCommandText (Valeur)
strCancelCommandText = Valeur
Propriété de fin
Propriété publique Obtenir CancelCommandText()
CancelCommandText = strCancelCommandText
Propriété de fin
Propriété publique Let DeleteCommandText (Value)
strDeleteCommandText = Valeur
Propriété de fin
Propriété publique Obtenir DeleteCommandText()
SupprimerCommandText = strDeleteCommandText
Propriété de fin
Propriété publique Let RegExp (Valeur)
strRegExp = Valeur
Propriété de fin
Propriété publique Obtenir RegExp()
RegExp = strRegExp
Propriété de fin
Propriété publique Obtenir HTMLstr()
tempstr = ""
si intWidth <> "" alors tempstr = tempstr & " width=""" & intWidth & """"
si intHeight <> "" alors tempstr = tempstr & " height =""" & intHeight & """"
si strStyle <> "" alors tempstr = tempstr & " style=""" & strStyle & """"
si strEvent <> "" alors tempstr = tempstr & " " & strEvent
si strAlign <> "" alors tempstr = tempstr & " align=""" & strAlign & """"
HTMLstr = tempstr
Propriété de fin
Fin du cours
%>