Gerar tabelas automaticamente, concluir automaticamente as funções de exclusão, edição, preenchimento e paginação e personalizar o
código de estilo do cabeçalho usando duas classes
.No início, pensei muito e a função era muito poderosa. Quanto mais forte a versatilidade, a classe asp é executada mais lentamente. começa, menos interessado fica no final. Ainda há muitas funções que não foram concluídas, como verificação de tipo de campo, exibição de imagens, controles, etc. Os interessados podem adicionar
exemplos destas funções:
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") 'Conectar string ACCSS
a.SQLString="select * from table1" 'Gera a instrução sql para o conjunto de registros exibido pelo datagrid
a.isAddnew = 1 'Se novos registros podem ser adicionados
a.Table = "table1" 'Tabela principal controlada pelo datagrid
a.UniqueField = "ID" 'Campo sinalizador, todos os registros não devem repetir números inteiros
a.PagePosition = "down" 'Posição de exibição da página, acima para cima, abaixo para baixo, updown, superior e inferior, outras não são exibidas
a.pagesize = 5 'Exibe o número de registros por página
a.Pagenumber = 10 'Exibe o número da página
a.BorderColor="#ff0000" 'O padrão é renderizar a exibição
a.BackGround="#00ff00" 'O padrão é renderizar a exibição
a.BorderWidth=1 O padrão é 1
a.
definir b1 = nova coluna
b1.Field = "id" 'O campo do banco de dados vinculado a esta coluna
b1.Title = "Logotipo" 'Título
b1.Align = "centro" ' Alinhamento
a.AddColumn(b1) 'Insira esta coluna no datagrid
definir b2 = nova coluna
b2.Field = "nome"
b2.Title="Sobrenome"
a.AddColumn(b2)
set b3 = nova coluna
b3.Field = "sobrenome"
b3.Título = "Nome"
a.AddColumn(b3)
set b4 = nova coluna
b4.Field = "horários de login"
b4.Title = "Número de logins"
b4.ReadOnly = true 'Definido como somente leitura e não aparecerá na caixa de edição e em novos registros
a.AddColumn(b4)
set b5 = nova coluna
b5.Title="Editar"
b5.Columntype ="edit" 'Editar coluna
b5.EditCommandText = "Editar" 'Editar texto do botão
a.AddColumn(b5)
set b6 = nova coluna
b6.align = "centro"
b6.Largura = 200
b6.Columntype = "excluir"
b6.DeleteCommandText = "Botão Excluir"
b6.Title="Excluir"
a.AdicionarColuna(b6)
a.CreateGrid()
definir b1 = nada
definir b2 = nada
definir b3 = nada
definir b4 = nada
definir b5 = nada
definir b6 = nada
O arquivo de classe é o seguinte:
<%Class DataGrid
Páginas privadas
StrSQLString privado
PublicConnstr
Colunas Privadas
Índice privado
Privado strUniqueField,strTable
Privado rs
strCellspacing privado, strCellpadding, strCssClass
Privado strBorderColorDark,strBorderColorLight,strBackGroundColor
IntBorderWidth privado
Privado strHeadStyle, strHeadBackgroudColor
StrStyle privado,strAlternateStyle
UniqueKey privada,dg_action,currPage
Ação privadaURL,pageURL,operaçãoURL,formURL
Posição da página pública, tamanho da página, número da página
Público éAdicionar novo
Subclasse Privada_Initialize()
definir Colunas = Server.CreateObject("Scripting.Dictionary")
índice = 0
Tamanho da página = 10
Número da página = 10
PagePosition = "para cima"
strSQLString = Sessão("DSN")
chave única = Solicitação("chave única")
dg_action = Solicitação("dg_action")
currPage = Request("Página")
actionURL = Request.ServerVariables("Script_name") & "?page=" & currPage
se dg_action= "editar" então formURL = actionURL& "&dg_action=update&uniquekey="&uniquekey
OperationURL = Request.ServerVariables("Script_name") & "?page=" & currPage& "&uniquekey=" & uniquekey
pageURL = Request.ServerVariables("Nome_do_Script")&"?1=1"
se currPage = "" ou isnull(currPage) então currPage = 1
strBorderColorDark="#f7f7f7"
strBorderColorLight = "#cccccc"
strBackgroundColor = "#f7f7f7"
strHeadBackgroudColor = "#F2F2F2"
intBorderWidth = 1
strAlternateStyle="bgcolor=#f6f6f6"
isAdicionarnovo = 1
Definir rs = Server.CreateObject("Adodb.Recordset")
Finalizar sub
Subclasse Privada_Terminate()
rs.fechar
setrs = nada
definir colunas = nada
Finalizar sub
Propriedade Pública Obter SQLString()
SQLString =strSQLString
Fim da propriedade
Propriedade pública Let SQLString(Valor)
strSQLString = Valor
Fim da propriedade
Propriedade pública Let Style (Valor)
strEstilo = Valor()
Fim da propriedade
Estilo de obtenção de propriedade pública()
Estilo = strStyle
Fim da propriedade
Propriedade pública Let UniqueField(Valor)
strUniqueField = lcase(Valor)
Fim da propriedade
Propriedade Pública Obter UniqueField()
UniqueField = strUniqueField
Fim da propriedade
Tabela de propriedade pública (valor)
strTabela = lcase(Valor)
Fim da propriedade
Propriedade Pública GetTable()
Tabela = strTabela
Fim da propriedade
Propriedade pública Let DbConn(Valor)
strConn = Valor
Fim da propriedade
Propriedade Pública Obter Versão()
Versão = "1.0"
Propriedade final
Propriedade pública Let Cellspacing (Valor)
strcellspace = Valor
Fim da propriedade
Propriedade pública Obter espaçamento entre células()
Espaçamento entre células = espaçamento entre células
Fim da propriedade
Propriedade pública Let cellpadding(Valor)
strcellpadding = Valor
Fim da propriedade
Propriedade pública Obtenha cellpadding()
cellpadding = strCellspacing
Fim da propriedade
Propriedade pública Let CssClass(Valor)
strCssClass = Valor
Fim da propriedade
Propriedade Pública Obter CssClass()
CssClass = strCssClass
Fim da propriedade
Propriedade pública Let BorderColor(valor)
strBorderColorDark = valor
Fim da propriedade
Propriedade pública GetBorderColor()
BorderColor = strBorderColorDark
Fim da propriedade
Propriedade pública Let BackGround(valor)
strBorderColorDark = valor
strBackgroundColor = valor
Fim da propriedade
Propriedade Pública Get BackGround()
Fundo = strBorderColorLight
Fim da propriedade
Propriedade pública Let BorderWidth(valor)
intBorderWidth = valor
Fim da propriedade
Propriedade pública GetBorderWidth()
BorderWidth = intBorderWidth
Fim da propriedade
Propriedade pública Obter nColumns(intIndex)
nkeys = Colunas.Keys
nItems = Colunas.Items
para i = 0 para Columns.Count - 1
se intIndex = nkeys(i) então
definir tmp = nItems(i)
terminar se
próximo
definir nColunas = tmp
Fim da propriedade
Página de função privada (totalpage,pagenumber,thisPage)
MinPage = estaPágina - número da página/2
se MinPage <= 0 então MinPage = 1
'se MinPage + pagenumber/2 > totalpage then Maxpage = totalpage else Maxpage = MinPage + pagenumber
para i = MinPage para MinPage + pagenumber -1
se eu <= página total então
se cint(estaPágina)<> cint(i) então
strtemp = strtemp & "<a href="&pageURL&"&page=" & i &">" & i & "</a> "
outro
strtemp = strtemp & i&" "
terminar se
outro
página = strtemp
Função de saída
terminar se
Próximo
página = strtemp
Função final
Sub CreateGrid público()
nkeys = Colunas.Keys
nItems = Colunas.Items
Se dg_action="atualizar" então
dimstrsql
strsql = "atualizar "& tabela & "definir"
escurecer j
j=0
Para i = 0 para indexar - 1
se nItems(i).Columntype<>"edit" e nItems(i).Columntype <> "delete" e não nItems(i).readonly e nItems(i).field<>uniquefield então
se j <> 0 então strsql = strsql & ","
Selecione o caso nItems(i).DataType
Caso "texto"
strsql = strsql & nItems(i).field & "='" & Request(nItems(i).field)&"' "
Caso "número","int","bigint","tinyint"
strsql = strsql & nItems(i).field & "=" & Request(nItems(i).field) & " "
Caso "data","hora","datahora"
strsql = strsql & nItems(i).field & "=convert(datetime,'" & Request(nItems(i).field)&"',102) "
Outro caso
strsql = strsql & nItems(i).field & "='" & Request(nItems(i).field)&"' "
Finalizar seleção
j=j+1
Terminar se
Próximo
strsql = strsql & "onde" & UniqueField &" = "& chave única
definir primeiro = Server.CreateObject("adodb.recordset")
primeiro.Abra strsql,connstr
'primeiro.Fechar
definir primeiro = nada
definir strsql = nada
Terminar se
Se dg_action="delete" então
strsql = ""
strsql = "excluir de " & tabela & "onde" & UniqueField &" = "& chave única
resposta.Escreva strsql
definir primeiro = Server.CreateObject("adodb.recordset")
primeiro.Abra strsql,connstr
'primeiro.Fechar
definir primeiro = nada
Terminar se
SE dg_action = "addnew" e isAddnew = 1 então
'dim strsql
definir primeiro = Server.CreateObject("adodb.recordset")
primeira tabela aberta,connstr,1,3,2
primeiro.addnew
j=0
Para i = 0 para indexar - 1
se nItems(i).Columntype<>"edit" e nItems(i).Columntype <> "delete" e não nItems(i).readonly e nItems(i).field<>uniquefield então
se j <> 0 então strsql = strsql & ","
Selecione o caso nItems(i).DataType
Caso "texto"
primeiro(nItems(i).campo) = Solicitação(nItems(i).campo)
Caso "número","int","bigint","tinyint"
primeiro(nItems(i).campo) = Solicitação(nItems(i).campo)
Caso "data","hora","datahora"
primeiro(nItems(i).campo) = Solicitação(nItems(i).campo)
Outro caso
primeiro(nItems(i).campo) = Solicitação(nItems(i).campo)
Finalizar seleção
j=j+1
Terminar se
Próximo
primeira atualização
definir primeiro = nada
Terminar se
rs.Open strSQLString,connstr,1,1
strTable= "<table border=" & intBorderWidth & " bordercolordark=" & strBorderColorDark & " bordercolorlight=" & strbordercolorlight & "class=" &cssclass & "cellspacing=0>" 'Adicionar estilo
strTable = strTable & "<form action=" & formURL & " name=""gridform"" método=post>"
se PagePosition="up" ou PagePosition="updown" then strTable = strTable & "<tr><td colspan="& index &">"& page(rs.PageCount,Pagenumber,currPage )&"</td>< /tr>"
strTable = strTable & "<tr bgcolor=" & strHeadBackgroudColor & ">"
para i = 0 para índice - 1
se nItems(i).Title<>"" então
strTable = strTable & "<td " & nItems(i).HTMLstr & ">" & nItems(i).Title &"</td>"
outro
strTable = strTable & "<td " & nItems(i).HTMLstr & ">" & rs.Fields(i).Item.Name &"</td>"
terminar se
Próximo
strTabela = strTabela & "</tr>"
se cint(currPage) > cint(rs.PageCount) então currPage = rs.PageCount
intPage = Tamanho da página
rs.PageSize = tamanho da página
rs.AbsolutePage = currPage
faça while não rs.eof e intPage > 0
intPage = intPage - 1
dbuniquekey = rs(campo único)
Se intPage mod 2 então
strTabela = strTabela & "<tr>"
Outro
strTabela = strTabela & "<tr "& strAlternateStyle &">"
Terminar se
'response.Write len(dg_action)>0 e int(dbuniquekey) = int(uniquekey)
se dg_action = "edit" e int(dbuniquekey) = int(uniquekey) então
para i = 0 para índice - 1
se nItems(i).Columntype<>"edit" e nItems(i).Columntype <> "delete" e não nItems(i).readonly e nItems(i).field<>uniquefield então
strTable = strTable & "<td " & nItems(i).HTMLstr &"><input type=Text name=""" & rs.Fields(nItems(i).field).Name &""" valor="" " & rs(nItems(i).campo) &"""></td>"
outro
Selecione o caso lcase(nItems(i).Columntype)
Caso "rótulo"
strTable = strTable & "<td "& nItems(i).HTMLstr &">" & rs(nItems(i).field) &"</td>"
Caso "rádio"
Caso "imagem"
Caso "caixa de seleção"
Caso "caixa de texto"
strTable = strTable & "<td " & nItems(i).HTMLstr &"><input type=text name=""" & rs.Fields(i).Name &""" value=" & rs(nItems(i) ).campo) &"></td>"
Caso "link"
Caso "editar"
if UniqueField=""então ErrorMsg="UniqueField não definido"
se dg_action = "editar" então
strTable = strTable & "<td "&nItems(i).HTMLstr &"><a href=""JavaScript:document.gridform.submit()"">"&nItems(i).UpdateCommandText&"</a> <a href ="&actionURL&">"&nItems(i).CancelCommandText&"</a></td>"
outro
strTable = strTable & "<td "&nItems(i).HTMLstr &"><a href="&actionURL&"&dg_action=edit&uniquekey=" & rs(UniqueField) &">"&nItems(i).EditCommandText&"</a>< /td>"
terminar se
Caso "excluir"
if UniqueField=""então ErrorMsg="UniqueField não definido"
strTable = strTable & "<td "&nItems(i).HTMLstr &"><a href="&actionURL&"&dg_action=delete&uniquekey=" & rs(UniqueField) &">"&nItems(i).DeleteCommandText&"</a>< /td>"
Caso "atualização"
Outro caso
strTable = strTable & "<td " & nItems(i).HTMLstr & ">" & rs(nItems(i).field) & "</td>"
Finalizar seleção
terminar se
Próximo
outro
para i = 0 para índice - 1
selecione caso lcase(nItems(i).Columntype)
Caso "rótulo"
strTable = strTable & "<td " & nItems(i).HTMLstr & ">" & rs(nItems(i).field) &"</td>"
Caso "rádio"
Caso "imagem"
Caso "caixa de seleção"
Caso "caixa de texto"
strTable = strTable & "<td " & nItems(i).HTMLstr &"><input type=text value=" & rs(nItems(i).field) &"></td>"
Caso "link"
Caso "editar"
if UniqueField=""então ErrorMsg="UniqueField não definido"
strTable = strTable & "<td " & nItems(i).HTMLstr & "><a href=" & actionURL & "&dg_action=edit&uniquekey=" & rs(UniqueField) & ">" & nItems(i).EditCommandText & " </a></td>"
Caso "excluir"
if UniqueField=""então ErrorMsg="UniqueField não definido"
strTable = strTable & "<td " & nItems(i).HTMLstr &"><a href=" & actionURL & "&dg_action=delete&uniquekey=" & rs(UniqueField) &">" & nItems(i).DeleteCommandText&"< /a></td>"
Caso "atualização"
Outro caso
strTable = strTable & "<td " & nItems(i).HTMLstr &">" & rs(nItems(i).Field) & "</td>"
Finalizar seleção
Próximo
Terminar se
'Terminar se
rs.movnext
strTabela = strTabela & "</tr>"& vbcrlf
laço
se PagePosition="down" ou PagePosition="updown" then strTable = strTable & "<tr><td colspan="& index &">"& page(rs.PageCount,Pagenumber,currPage )
'strTabela =strTabela&"<tr>"
para i = 0 para índice - 1
se nItems(i).Columntype<>"edit" e nItems(i).Columntype <> "delete" e não nItems(i).readonly e nItems(i).field<>uniquefield então
'strTable = strTable & "<td " & nItems(i).HTMLstr &"><input type=Text name=""" & rs.Fields(nItems(i).field).Name &"""></ td>"
outro
'strTable = strTable & "<td " & nItems(i).HTMLstr &"> </td>"
terminar se
próximo
strTabela =strTabela&"</tr>"
strTabela = strTabela & "</form></table>"
Se isAddnew = 1 então
strTable = strTable & "<form action=""?dg_action=addnew"" name=""dgridadd"" method=""post""><table border=" & intBorderWidth & " bordercolordark=" & strBorderColorDark & " bordercolorlight= " & strbordercolorlight & "cellspacing=0><tr>"
para i = 0 para índice - 1
se nItems(i).Columntype<>"edit" e nItems(i).Columntype <> "delete" e não nItems(i).readonly e nItems(i).field<>uniquefield então
strTable = strTable & "<td " & nItems(i).HTMLstr &">" & rs.Fields(nItems(i).field).Nome &"</td>"
outro
'strTable = strTable & "<td " & nItems(i).HTMLstr &">"&nItems(i).Title&"</td>"
terminar se
próximo
strTable = strTable & "<td rowspan=2><a href=""JavaScript:document.dgridadd.submit()"">Novo</a></td></tr><tr>"
para i = 0 para índice - 1
se nItems(i).Columntype<>"edit" e nItems(i).Columntype <> "delete" e não nItems(i).readonly e nItems(i).field<>uniquefield então
strTable = strTable & "<td " & nItems(i).HTMLstr &"><input type=Text name=""" & rs.Fields(nItems(i).field).Name &"""></td >" & vbcrlf
outro
'strTable = strTable & "<td " & nItems(i).HTMLstr &"> </td>"
terminar se
próximo
strTabela = strTabela &"</tr></table></form>"
Terminar se
Resposta.Write strTable
Finalizar sub
Sub AddColumn público (cColumn)
'set tem = nova coluna
'tem = cColuna
'response.Write cColumn.ColumnHTMLstr
Colunas.Adicionar índice,cColumn
índice = índice + 1
'Colunas.Itens(i)
Finalizar sub
Fim da aula
Coluna de Classe
StrType privado
strAlign privado
StrStyle privado
Coluna PrivadaTexto
Largura interna privada
Privado intHight
Rua privada
Título privado
Evento privado
Classe strCss privada
StrText privado
Privado strEditCommandText,strUpdateCommandText,strCancelCommandText,strDeleteCommandText
StrRegExp privado
StrReadOnly privado
StrDataType privado
Público MaxValue,MinValue,MaxLength,MinLength,IsEmpty,IsChar,IsNumber,isCharNumber,isDate,isEmail
Subclasse Privada_Initialize()
ColumnType = "Texto"
strEditCommandText = "EDITAR"
strUpdateCommandText = "ATUALIZAÇÃO"
strCancelCommandText = "CANCELAR"
strDeleteCommandText = "DELETAR"
Finalizar sub
Subclasse Privada_Terminate()
Finalizar sub
Propriedade pública Let Columntype(Valor)
strTipo = lcase(Valor)
Fim da propriedade
Propriedade Pública Obter Columntype()
TipoColuna = strType
Fim da propriedade
Propriedade Pública Let Para (Valor)
Pará=Valor
Fim da propriedade
Propriedade pública Let ParaLink (Valor)
ParaLink = Substituir(Valor,"{0}",Para)
Fim da propriedade
Propriedade pública Let ControlName(Valor)
NomeControle = Valor
Fim da propriedade
Propriedade pública Let Style (Valor)
strStyle = Valor
Fim da propriedade
Propriedade Pública Let Eventstr(Valor)
strEvent = Valor
Fim da propriedade
Propriedade pública Let Align (Valor)
strAlign = Valor
Fim da propriedade
Propriedade pública GetAlign()
Alinhar = strAlign
Fim da propriedade
Propriedade pública GetEventstr()
Eventstr = strEvento
Fim da propriedade
Propriedade Pública Deixe Largura (Valor)
intLargura = Valor
Fim da propriedade
Campo Let de propriedade pública (valor)
strCampo = lcase(Valor)
Fim da propriedade
Campo de obtenção de propriedade pública()
Campo = strField
Fim da propriedade
Título de propriedade pública (valor)
if valor="" then strTitle = strField else strTitle = Valor
Fim da propriedade
Propriedade Pública Obter Título()
if strTitle="" then Title = strField else Title = strTitle
Fim da propriedade
Propriedade pública Let CssClass(Valor)
strCssClass = Valor
Fim da propriedade
Propriedade Pública Obter CssClass()
CssClass = strCssClass
Fim da propriedade
Propriedade pública Let DataType(Valor)
strDataType = lcase(Valor)
Fim da propriedade
Propriedade Pública Obter DataType()
DataType = strDataType
Fim da propriedade
Propriedade pública Let Text (Valor)
selecione o valor do caso
caso ""
strText = strTipo
caso nulo
strText = strTipo
caso outro
strText = Valor
final selecionar
Fim da propriedade
Propriedade Pública Obter Texto()
Texto = strTexto
Fim da propriedade
Propriedade pública Let ReadOnly(Valor)
if value="" ou isnull(value) then strReadOnly = False else strReadOnly = value
Fim da propriedade
Propriedade pública Get ReadOnly()
Somente leitura = strReadOnly
Fim da propriedade
Propriedade pública Let EditCommandText(Value)
strEditCommandText = Valor
Fim da propriedade
Propriedade pública Obtenha EditCommandText()
EditCommandText = strEditCommandText
Fim da propriedade
Propriedade pública Let UpdateCommandText(Value)
strUpdateCommandText = Valor
Fim da propriedade
Propriedade Pública GetUpdateCommandText()
UpdateCommandText = strUpdateCommandText
Fim da propriedade
Propriedade pública Let CancelCommandText(Value)
strCancelCommandText = Valor
Fim da propriedade
Propriedade Pública Obter CancelCommandText()
CancelCommandText = strCancelCommandText
Fim da propriedade
Propriedade pública Let DeleteCommandText(Value)
strDeleteCommandText = Valor
Fim da propriedade
Propriedade pública Obter DeleteCommandText()
DeleteCommandText = strDeleteCommandText
Fim da propriedade
Propriedade pública Let RegExp (Valor)
strRegExp = Valor
Fim da propriedade
Propriedade Pública Obter RegExp()
RegExp = strRegExp
Fim da propriedade
Propriedade Pública Obtenha HTMLstr()
tempstr = ""
if intWidth <> "" then tempstr = tempstr & " width=""" & intWidth & """"
if intHeight <> "" then tempstr = tempstr & " height =""" & intHeight & """"
if strStyle <> "" então tempstr = tempstr & "style=""" & strStyle & """"
se strEvent <> "" then tempstr = tempstr & " " & strEvent
if strAlign <> "" then tempstr = tempstr & "align=""" & strAlign & """"
HTMLstr = tempstr
Fim da propriedade
Fim da aula
%>