Genere tablas automáticamente, complete automáticamente las funciones de eliminación, edición, llenado y paginación y personalice el
código
de estilo del encabezadoal principio. Pensé demasiado y la función era demasiado poderosa. Cuanto más fuerte era la versatilidad, más lenta era la ejecución de la clase asp. Cuando comienza, menos interesado se vuelve al final. Todavía hay muchas funciones que no se han completado, como verificación de tipo de campo, visualización de imágenes, controles, etc. El código se publica para que todos lo estudien y estudien juntos. Quienes estén interesados pueden agregar
ejemplos de estas funciones:
set a = new DataGrid
'a.Connstr="Proveedor=SQLOLEDB.1;ID de usuario=sa;Contraseña=servidor;Catálogo inicial=temp_blue;Fuente de datos=servidor;Tiempo de espera de conexión=30;Traducción automática=Verdadero;Tamaño del paquete=4096;"
a.Connstr="Provider=Microsoft.Jet.OLEDB.4.0;"&" Data Source="&server.mappath("test.mdb") 'Conectar cadena ACCSS
a.SQLString="select * from table1" 'Generar la instrucción SQL para el conjunto de registros mostrado por el datagrid
a.isAddnew = 1 'Si se pueden agregar nuevos registros
a.Table = "table1" 'Tabla principal controlada por datagrid
a.UniqueField = "ID" 'Campo marcado, todos los registros no deben repetir números enteros
a.PagePosition = "abajo" 'Posición de visualización de la página, arriba arriba, abajo abajo, arriba abajo, arriba y abajo, otras no se muestran
a.pagesize = 5 'Mostrar número de registros por página
a.Pagenumber = 10 'Mostrar número de página
a.BorderColor="#ff0000" 'El valor predeterminado es mostrar la visualización
a.BackGround="#00ff00" 'El valor predeterminado es mostrar la visualización
a.BorderWidth=1 El valor predeterminado es 1
a.
establecer b1 = nueva columna
b1.Field = "id" 'El campo de la base de datos vinculado a esta columna
b1.Title = "Logotipo" 'Título
b1.Align = "centro" ' Alineación
a.AddColumn(b1) 'Inserta esta columna en la cuadrícula de datos
establecer b2 = nueva columna
b2.Field="nombre"
b2.Title="Apellido"
a.AddColumn(b2)
establecer b3 = nueva columna
b3.Field = "apellido"
b3.Título = "Nombre"
a.AddColumn(b3)
establecer b4 = nueva columna
b4.Field = "horas de inicio de sesión"
b4.Title = "Número de inicios de sesión"
b4.ReadOnly = true 'Se establece como de solo lectura y no aparecerá en el cuadro de edición ni en los registros nuevos
a.AddColumn(b4)
establecer b5 = nueva columna
b5.Title="Editar"
b5.Columntype ="editar" 'Editar columna
b5.EditCommandText = "Editar" 'Editar texto del botón
a.AddColumn(b5)
establecer b6 = nueva columna
b6.align = "centro"
b6.Ancho = 200
b6.Columntype = "eliminar"
b6.DeleteCommandText = "Botón Eliminar"
b6.Title="Eliminar"
a.AddColumn(b6)
a.CreateGrid()
establece b1 = nada
establecer b2 = nada
establecer b3 = nada
establecer b4 = nada
establecer b5 = nada
establecer b6 = nada
El archivo de clase es el siguiente:
<%Class DataGrid
paginas privadas
Cadena strSQL privada
PublicConnstr
Columnas privadas
índice privado
strUniqueField privado, strTable
rs privados
strCellspacing privado, strCellpadding, strCssClass
Privado strBorderColorDark,strBorderColorLight,strBackGroundColor
Ancho de borde int privado
Privado strHeadStyle,strHeadBackgroudColor
strStyle privado, strAlternateStyle
Clave única privada,dg_action,currPage
URL de acción privada, URL de página, URL de operación, URL de formulario
Posición de página pública, tamaño de página, número de página
Público es Agregar nuevo
Subclase privada_Initialize()
establecer columnas = Server.CreateObject ("Scripting.Dictionary")
índice = 0
Tamaño de página = 10
Número de página = 10
Posición de página = "arriba abajo"
strSQLString = Sesión("DSN")
clave única = Solicitud ("clave única")
dg_action = Solicitud ("dg_action")
currPage = Solicitud("Página")
actionURL = Request.ServerVariables("Script_name") & "?page=" & currPage
si dg_action= "editar" entonces formURL = actionURL& "&dg_action=update&uniquekey="&uniquekey
operaciónURL = Request.ServerVariables("Script_name") & "?page=" & currPage& "&uniquekey=" & clave única
pageURL = Solicitud.ServerVariables("Script_name")&"?1=1"
si currPage = "" o isnull(currPage) entonces currPage = 1
strBorderColorDark="#f7f7f7"
strBorderColorLight = "#cccccc"
strBackgroundColor = "#f7f7f7"
strHeadBackgroudColor = "#F2F2F2"
intBorderWidth = 1
strAlternateStyle="bgcolor=#f6f6f6"
esAgregarnuevo = 1
Establecer rs = Server.CreateObject ("Adodb.Recordset")
Subtítulo final
Subclase privada_Terminate()
rs.cerrar
setrs=nada
establecer columnas = nada
Subtítulo final
Propiedad pública Obtener SQLString()
SQLString = strSQLString
Propiedad final
Propiedad pública Let SQLString(Valor)
strSQLString = Valor
Propiedad final
Estilo de alquiler de propiedad pública (valor)
strStyle = Valor()
Propiedad final
Propiedad pública Obtener estilo()
Estilo = strStyle
Propiedad final
Propiedad pública Let UniqueField(Value)
strUniqueField = lcase(Valor)
Propiedad final
Propiedad pública Obtener UniqueField()
CampoÚnico = strCampoÚnico
Propiedad final
Tabla de alquiler de propiedad pública (valor)
strTable = lcase(Valor)
Propiedad final
Propiedad pública GetTable()
Tabla = strTable
Propiedad final
Propiedad pública Let DbConn (Valor)
strConn = Valor
Propiedad final
Propiedad pública Obtener versión()
Versión = "1.0"
Propiedad final
Propiedad pública Permitir espacio entre celdas (valor)
strcellspacing = Valor
Propiedad final
Propiedad pública Obtener espacio entre celdas()
Espaciado de celdas = espaciado de celdas
Propiedad final
Propiedad pública Let cellpadding(Valor)
strcellpadding = Valor
Propiedad final
Propiedad pública Obtener cellpadding()
relleno de celdas = strespacio entre celdas
Propiedad final
Propiedad pública Let CssClass(Valor)
strCssClass = Valor
Propiedad final
Propiedad pública Obtener CssClass()
CssClass = strCssClass
Propiedad final
Propiedad pública Let BorderColor (valor)
strBorderColorDark = valor
Propiedad final
Propiedad pública GetBorderColor()
BorderColor = strBorderColorDark
Propiedad final
Fondo de propiedad pública alquilada (valor)
strBorderColorDark = valor
strBackgroundColor = valor
Propiedad final
Propiedad pública Obtener antecedentes()
Fondo = strBorderColorLight
Propiedad final
Propiedad pública Let BorderWidth(valor)
intBorderWidth = valor
Propiedad final
Propiedad pública GetBorderWidth()
Ancho de borde = intAncho de borde
Propiedad final
Propiedad pública Obtener nColumns(intIndex)
nkeys = Columnas.Claves
nItems = Columnas.Items
para i = 0 a Columns.Count - 1
si intIndex = nkeys(i) entonces
establecer tmp = nArtículos(i)
terminar si
próximo
establecer nColumnas = tmp
Propiedad final
Página de función privada (página total, número de página, esta página)
MinPage = esta página - número de página/2
si MinPage <= 0 entonces MinPage = 1
'si MinPage + número de página/2 > página total entonces Maxpage = página total else Maxpage = MinPage + número de página
para i = MinPage a MinPage + número de página -1
si i <= página total entonces
si cint(estaPágina)<> cint(i) entonces
strtemp = strtemp & "<a href="&pageURL&"&page=" & i &">" & i & "</a> "
demás
strtemp = strtemp & i&" "
terminar si
demás
página = strtemp
Función de salida
terminar si
Próximo
página = strtemp
Función final
SubCreateGrid público()
nkeys = Columnas.Claves
nItems = Columnas.Items
Si dg_action="actualizar" entonces
strsql tenue
strsql = "actualizar "& tabla & " establecer "
tenue j
j=0
Para i = 0 para indexar - 1
si nItems(i).Columntype<>"editar" y nItems(i).Columntype <> "eliminar" y no nItems(i).readonly y nItems(i).field<>uniquefield entonces
si j <> 0 entonces strsql = strsql & ","
Seleccione el caso nItems(i).DataType
Caso "texto"
strsql = strsql & nItems(i).field & "='" & Solicitud(nItems(i).field)&"' "
Caso "número", "int", "bigint", "tinyint"
strsql = strsql & nItems(i).field & "=" & Solicitud(nItems(i).field) & " "
Caso "fecha","hora","fechahora"
strsql = strsql & nItems(i).field & "=convert(datetime,'" & Request(nItems(i).field)&"',102) "
Caso más
strsql = strsql & nItems(i).field & "='" & Solicitud(nItems(i).field)&"' "
Finalizar selección
j=j+1
terminar si
Próximo
strsql = strsql & " donde " & UniqueField &" = "& clave única
establecer primero = Server.CreateObject("adodb.recordset")
primero.Abrir strsql,connstr
'primero.Cerrar
establecer primero = nada
establecer strsql = nada
terminar si
Si dg_action="eliminar" entonces
strsql = ""
strsql = "eliminar de " & tabla & " donde " & UniqueField &" = "& clave única
respuesta.Escribir strsql
establecer primero = Server.CreateObject("adodb.recordset")
primero.Abrir strsql,connstr
'primero.Cerrar
establecer primero = nada
terminar si
SI dg_action = "addnew" y isAddnew = 1 entonces
'tenue strsql
establecer primero = Server.CreateObject("adodb.recordset")
primera tabla abierta, connstr, 1,3,2
primero.añadirnuevo
j=0
Para i = 0 para indexar - 1
si nItems(i).Columntype<>"editar" y nItems(i).Columntype <> "eliminar" y no nItems(i).readonly y nItems(i).field<>uniquefield entonces
si j <> 0 entonces strsql = strsql & ","
Seleccione el caso nItems(i).DataType
Caso "texto"
primero(nItems(i).campo) = Solicitud(nItems(i).campo)
Caso "número", "int", "bigint", "tinyint"
primero(nItems(i).campo) = Solicitud(nItems(i).campo)
Caso "fecha","hora","fechahora"
primero(nItems(i).campo) = Solicitud(nItems(i).campo)
Caso más
primero(nItems(i).campo) = Solicitud(nItems(i).campo)
Finalizar selección
j=j+1
terminar si
Próximo
primera actualización
establecer primero = nada
terminar si
rs.Abrir strSQLString,connstr,1,1
strTable= "<table border=" & intBorderWidth & " bordercolordark=" & strBorderColorDark & " bordercolorlight=" & strbordercolorlight & "class=" &cssclass & "cellspacing=0>" 'Agregar estilo
strTable = strTable & "<formulario acción=" & formURL & " name=""gridform"" método=post>"
si PagePosition="arriba" o PagePosition="arriba" entonces strTable = strTable & "<tr><td colspan="& index &">"& page(rs.PageCount,Pagenumber,currPage )&"</td>< /tr>"
strTable = strTable & "<tr bgcolor=" & strHeadBackgroudColor & ">"
para i = 0 para indexar - 1
si nItems(i).Title<>"" entonces
strTable = strTable & "<td " & nItems(i).HTMLstr & ">" & nItems(i).Title &"</td>"
demás
strTable = strTable & "<td " & nItems(i).HTMLstr & ">" & rs.Fields(i).Item.Name &"</td>"
terminar si
Próximo
strTable = strTable & "</tr>"
si cint(currPage) > cint(rs.PageCount) entonces currPage = rs.PageCount
intPage = Tamaño de página
rs.PageSize = tamaño de página
rs.AbsolutePage = página actual
hacer mientras no sea rs.eof e intPage > 0
intPágina = intPágina - 1
dbuniquekey = rs(campo único)
Si intPage mod 2 entonces
strTable = strTable & "<tr>"
Demás
strTable = strTable & "<tr "& strAlternateStyle &">"
terminar si
'respuesta.Escribe len(dg_action)>0 e int(dbuniquekey) = int(uniquekey)
si dg_action = "editar" e int(dbuniquekey) = int(uniquekey) entonces
para i = 0 para indexar - 1
si nItems(i).Columntype<>"editar" y nItems(i).Columntype <> "eliminar" y no nItems(i).readonly y nItems(i).field<>uniquefield entonces
strTable = strTable & "<td " & nItems(i).HTMLstr &"><tipo de entrada=Nombre de texto=""" & rs.Fields(nItems(i).field).Nombre &""" value="" " & rs(nItems(i).campo) &"""></td>"
demás
Seleccione caso lcase(nItems(i).Columntype)
Caso "etiqueta"
strTable = strTable & "<td "& nItems(i).HTMLstr &">" & rs(nItems(i).field) &"</td>"
Caso "radio"
Caso "imagen"
Caso "casilla de verificación"
Caso "cuadro de texto"
strTable = strTable & "<td " & nItems(i).HTMLstr &"><tipo de entrada=nombre de texto=""" & rs.Fields(i).Name &""" value=" & rs(nItems(i) ).campo) &"></td>"
Caso "enlace"
Caso "editar"
si UniqueField="" entonces ErrorMsg="UniqueField no establecido"
si dg_action = "editar" entonces
strTable = strTable & "<td "&nItems(i).HTMLstr &"><a href=""JavaScript:document.gridform.submit()"">"&nItems(i).UpdateCommandText&"</a> <a href ="&actionURL&">"&nItems(i).CancelCommandText&"</a></td>"
demás
strTable = strTable & "<td "&nItems(i).HTMLstr &"><a href="&actionURL&"&dg_action=edit&uniquekey=" & rs(UniqueField) &">"&nItems(i).EditCommandText&"</a>< /td>"
terminar si
Caso "eliminar"
si UniqueField="" entonces ErrorMsg="UniqueField no establecido"
strTable = strTable & "<td "&nItems(i).HTMLstr &"><a href="&actionURL&"&dg_action=delete&uniquekey=" & rs(UniqueField) &">"&nItems(i).DeleteCommandText&"</a>< /td>"
Caso "actualización"
Caso más
strTable = strTable & "<td " & nItems(i).HTMLstr & ">" & rs(nItems(i).field) & "</td>"
Finalizar selección
terminar si
Próximo
demás
para i = 0 para indexar - 1
seleccione caso lcase(nItems(i).Tipo de columna)
Caso "etiqueta"
strTable = strTable & "<td " & nItems(i).HTMLstr & ">" & rs(nItems(i).field) &"</td>"
Caso "radio"
Caso "imagen"
Caso "casilla de verificación"
Caso "cuadro de texto"
strTable = strTable & "<td " & nItems(i).HTMLstr &"><input type=text value=" & rs(nItems(i).field) &"></td>"
Caso "enlace"
Caso "editar"
si UniqueField="" entonces ErrorMsg="UniqueField no establecido"
strTable = strTable & "<td " & nItems(i).HTMLstr & "><a href=" & actionURL & "&dg_action=edit&uniquekey=" & rs(UniqueField) & ">" & nItems(i).EditCommandText & " </a></td>"
Caso "eliminar"
si UniqueField="" entonces ErrorMsg="UniqueField no establecido"
strTable = strTable & "<td " & nItems(i).HTMLstr &"><a href=" & actionURL & "&dg_action=delete&uniquekey=" & rs(UniqueField) &">" & nItems(i).DeleteCommandText&"< /a></td>"
Caso "actualización"
Caso más
strTable = strTable & "<td " & nItems(i).HTMLstr &">" & rs(nItems(i).Field) & "</td>"
Finalizar selección
Próximo
terminar si
'Termina si
rs.movenext
strTable = strTable & "</tr>"& vbcrlf
bucle
si PagePosition="down" o PagePosition="updown" entonces strTable = strTable & "<tr><td colspan="& index &">"& page(rs.PageCount,Pagenumber,currPage)
'strTabla =strTabla&"<tr>"
para i = 0 para indexar - 1
si nItems(i).Columntype<>"editar" y nItems(i).Columntype <> "eliminar" y no nItems(i).readonly y nItems(i).field<>uniquefield entonces
'strTable = strTable & "<td " & nItems(i).HTMLstr &"><tipo de entrada=Nombre de texto=""" & rs.Fields(nItems(i).field).Name &"""></ td>"
demás
'strTable = strTable & "<td " & nItems(i).HTMLstr &"> </td>"
terminar si
próximo
strTable =strTable&"</tr>"
strTable = strTable & "</form></table>"
Si esAddnew = 1 entonces
strTable = strTable & "<form action=""?dg_action=addnew"" name=""dgridadd"" método=""post""><table border=" & intBorderWidth & " bordercolordark=" & strBorderColorDark & " bordercolorlight= " & strbordercolorlight & " cellspaceing=0><tr>"
para i = 0 para indexar - 1
si nItems(i).Columntype<>"editar" y nItems(i).Columntype <> "eliminar" y no nItems(i).readonly y nItems(i).field<>uniquefield entonces
strTable = strTable & "<td " & nItems(i).HTMLstr &">" & rs.Fields(nItems(i).field).Nombre &"</td>"
demás
'strTable = strTable & "<td " & nItems(i).HTMLstr &">"&nItems(i).Title&"</td>"
terminar si
próximo
strTable = strTable & "<td rowspan=2><a href=""JavaScript:document.dgridadd.submit()"">Nuevo</a></td></tr><tr>"
para i = 0 para indexar - 1
si nItems(i).Columntype<>"editar" y nItems(i).Columntype <> "eliminar" y no nItems(i).readonly y nItems(i).field<>uniquefield entonces
strTable = strTable & "<td " & nItems(i).HTMLstr &"><tipo de entrada=Nombre de texto=""" & rs.Fields(nItems(i).field).Nombre &"""></td >" & vbcrlf
demás
'strTable = strTable & "<td " & nItems(i).HTMLstr &"> </td>"
terminar si
próximo
strTable = strTable &"</tr></table></form>"
terminar si
Respuesta.Escribir strTable
Subtítulo final
Subcolumna pública (cColumna)
'establecer elemento = nueva columna
'tem = cColumna
'respuesta.Escribir cColumn.ColumnHTMLstr
Columnas.Agregar índice,cColumna
índice = índice + 1
'Columnas.Artículos(i)
Subtítulo final
Fin de clase
Columna de clase
Tipo de cadena privada
Línea privada
estilo privado
Texto de columna privada
Ancho interno privado
Altura privada
campo privado
Título privado
Evento privado
Clase strCss privada
Texto privado
Privado strEditCommandText,strUpdateCommandText,strCancelCommandText,strDeleteCommandText
strRegExp privado
Cadena privadaReadOnly
Tipo de datos str privado
Público MaxValue,MinValue,MaxLength,MinLength,IsEmpty,IsChar,IsNumber,isCharNumber,isDate,isEmail
Subclase privada_Initialize()
Tipo de columna = "Texto"
strEditCommandText = "EDITAR"
strUpdateCommandText = "ACTUALIZAR"
strCancelCommandText = "CANCELAR"
strDeleteCommandText = "ELIMINAR"
Subtítulo final
Subclase privada_Terminate()
Subtítulo final
Propiedad pública Let tipo de columna (valor)
strType = lcase(Valor)
Propiedad final
Propiedad pública Obtener tipo de columna()
Tipo de columna = tipo de cadena
Propiedad final
Propiedad Pública Let Para(Valor)
Parámetro=Valor
Propiedad final
Propiedad pública Let ParaLink(Valor)
ParaLink = Reemplazar(Valor,"{0}",Para)
Propiedad final
Propiedad pública Let ControlName(Valor)
Nombre del control = Valor
Propiedad final
Estilo de propiedad pública (valor)
strStyle = Valor
Propiedad final
Propiedad pública Let Eventstr(Valor)
strEvent = Valor
Propiedad final
Propiedad pública Let Align (Valor)
strAlign = Valor
Propiedad final
Propiedad pública GetAlign()
Alinear = strAlinear
Propiedad final
Propiedad pública GetEventstr()
Eventstr = strEvento
Propiedad final
Ancho de permiso de propiedad pública (valor)
intAncho = Valor
Propiedad final
Campo de alquiler de propiedad pública (valor)
strField = lcase(Valor)
Propiedad final
Campo de obtención de propiedad pública()
Campo = strCampo
Propiedad final
Título de alquiler de propiedad pública (valor)
si valor="" entonces strTitle = strField else strTitle = Valor
Propiedad final
Propiedad pública Obtener título()
si strTitle="" entonces Título = strField else Título = strTitle
Propiedad final
Propiedad pública Let CssClass(Valor)
strCssClass = Valor
Propiedad final
Propiedad pública Obtener CssClass()
CssClass = strCssClass
Propiedad final
Propiedad pública Let DataType(Value)
strDataType = lcase(Valor)
Propiedad final
Propiedad pública Obtener tipo de datos()
Tipo de datos = strTipo de datos
Propiedad final
Texto de permiso de propiedad pública (valor)
seleccionar valor de caso
caso ""
strText = strType
caso nulo
strText = strType
caso mas
strText = Valor
finalizar seleccionar
Propiedad final
Propiedad pública Obtener texto()
Texto = cadenaTexto
Propiedad final
Propiedad pública Let ReadOnly (Valor)
si value="" o isnull(value) entonces strReadOnly = False else strReadOnly = valor
Propiedad final
Propiedad pública Obtener solo lectura ()
Sólo lectura = strSolo lectura
Propiedad final
Propiedad pública Let EditCommandText(Value)
strEditCommandText = Valor
Propiedad final
Propiedad pública Obtener EditCommandText()
EditCommandText = strEditCommandText
Propiedad final
Propiedad pública Let UpdateCommandText(Valor)
strUpdateCommandText = Valor
Propiedad final
Propiedad pública GetUpdateCommandText()
UpdateCommandText = strUpdateCommandText
Propiedad final
Propiedad pública Let CancelCommandText(Valor)
strCancelCommandText = Valor
Propiedad final
Propiedad pública Obtener CancelCommandText()
CancelarCommandText = strCancelCommandText
Propiedad final
Propiedad pública Let DeleteCommandText(Value)
strDeleteCommandText = Valor
Propiedad final
Propiedad pública Obtener DeleteCommandText()
EliminarCommandText = strDeleteCommandText
Propiedad final
Propiedad pública Let RegExp(Valor)
strRegExp = Valor
Propiedad final
Propiedad pública Obtener RegExp()
RegExp = strRegExp
Propiedad final
Propiedad pública Obtener HTMLstr()
tempstr = ""
si intWidth <> "" entonces tempstr = tempstr & " width=""" & intWidth & """"
si intHeight <> "" entonces tempstr = tempstr & "altura=""" & intHeight & """"
si strStyle <> "" entonces tempstr = tempstr & " style=""" & strStyle & """"
si strEvent <> "" entonces tempstr = tempstr & " " & strEvent
si strAlign <> "" entonces tempstr = tempstr & " align=""" & strAlign & """"
HTMLstra = tempstra
Propiedad final
Fin de clase
%>