Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

tcn

[Resolvido] Inserir dados no GRID após botão

Recommended Posts

Boa Tarde Pessoal

 

 

eu sou um Noob literal em ASp e estou com projeto onde eu tenho que criar um GRID e partir deste grid que eu criei eu quero inserir informações nele o usuário tera um botão de Adicionar e logo em seguida ele Adicionar o grid e dalva na base eu sinceramente nao sei fazer isso, alguem poderia me dar um help, segue as informações

 

 


<br /><button type="button" value="BtnInvisi"><span> Adicionar Visitante></span></button>
       <hr />
<hr />

<br />					<span class="line">	<legend>  Visitantes Agendados</legend> </span>
                  <table class="TB_veic" width="700" border="0" cellspacing="0" cellpadding="0">
<tr> 
<th>CNH</th>
<th>PLACA</th>
   <th>MODELO</th>
<th>JUTIFICATIVA</th>
</tr>
      </table>


 

 

 

esse foi codigo que montei....ate agora

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha este exemplo e aqui outro exemplo2

 

e abaixo um que sempre uso

 

Todos nós já ouvimos sobre o maravilhoso Datagrid em ASP.Net,muito útil para aliás, neste exemplo iremos criar a uma versão do datagrid.

Para criar uma classe DataGrid ,primeiro problema foi a eficiência. Ao aprender como obter registros de uma base de dados e exibi-los em uma tabela em sua página ASP, muitas vezes fazemos desta forma.

 

<table>
<%
Do Until objRec.EOF
%>
  <tr>
       <td><%=objRec("nome") %></td>
       <td><%=objRec("enderco") %></td>
       <td><%=objRec("email") %></td>
  </tr>
<%
  objRec.movenext
loop
%>
</table>

 

Ainda mais eficaz é a utilização do método de GetRows do Recordset para preencher a 2 array dimensional . Então você já não tem que usar os recursos acessando o Recordset.

 

dim arTable
arTable = objRec.GetRows
objRec.Close
set objRec = nothing

 

 

Você tem agora 2 array dimensional , mas como o recordset armazena informação neste array?

 

arTable's - 2 dimensões: arTable (TotalCols, TotalRows). Portanto, se o meu Recordset retornou 10 registros , seria arTable (3, 10) e você teria que ir de arTable (0, 0) para arTable (2, 9) para recuperar cada valor que você deve ir através do TotalCols, seguido pelo TotalRows. Você não sabe quantos registros vai retornar, assim, usamos a função UBound:

 

dim tCols, tRows
tCols = UBound(arTable, 1)
tRows = UBound(arTable, 2)

 

 

Com um array de mais de uma dimensão que necessita abastecer UBound com um valor para indicar, que o elemento deseja o total. Como vimos acima nos tCols para definir o total da primeira dimensão e tRows para o total da segunda dimensão. Com esta informação, através dos registros utilizando loop aninhado.

 

<table>
<%
Dim x, y
For x = 0 to tRows
  Response.Write "<tr>"
  For y = 0 to tCols
      Response.Write "<td>" & rTable(y, x) & "</td>"
  Next
  Response.Write "</tr>"
Next
%>

 

Um bom modelo que podemos mover/encapsular em uma classe.

 

Quando a classe inicia estabelecemos nosso objeto connection e objeto Recordset , também definimos a variável Column Count para 0 para usar nas nossas próprias colunas e, finalmente, usamos a AutoColumns = true. É neste processo que você colocaria qualquer predefinições que você deseja para sua classe.

 

private pAutoColumns, pConnStr, pSqlStr, intColCnt
 Private pOutPut, pConn, pRec, x, y, pArray
 Private Sub Class_Initialize()
     Set pConn = server.createobject("adodb.connection")
     Set pRec = server.createobject("adodb.recordset")
     intColCnt = 0
     pAutoColumns = True
 End Sub

 

 

Em seguida, criamos as regras que nos permite definir as várias propriedades;

 

Public Property Let ConnectionString(strConn)
     pConnStr = strConn
 End Property

 Public Property Let AutoColumns(bAutoCols)
     If bAutoCols = True or bAutoCols = False then
         pAutoColumns = bAutoCols
     End IF
 End Property

 Public Property Let SqlString(strSql)
     pSqlStr = strSql
 End Property

 

Agora sobre os métodos, procedimentos, para a sua classe, adicionamos a funcionalidade real para a classe:

 

Public Sub AddColumn(strColName)
     If intColCnt = 0 then
         pOutPut = "<table width='100%' border=1 cellpadding=0 cellspacing=0>" & vbcrlf
         pOutPut = pOutPut & "<tr>" & vbcrlf
     End If
     pOutPut = pOutPut & "<td><strong>" & strColName & "</strong></td>" & vbcrlf
     intColCnt = intColCnt + 1
 End Sub

 

 

Se optar por especificar a nossa própria column names ,então, nós chamamos este método para adicionar um column names . Ele apenas acrescenta uma nova célula de nosso grid (tabela) para cada coluna,se quizermos iniciar a linha da tabela e se está em 0. Qualquer outro momento podemos acrescentar a célula , ou não, se você usar AutoColumns.

 

Public Sub Bind
     pConn.Open pConnStr
     Set pRec = pConn.Execute(pSqlStr)
     If pAutoColumns = True then
         'atribuir nomes de coluna retornados
         pOutPut = "<table width='100%' border=1 cellpadding=0 cellspacing=0>" & vbcrlf
         pOutPut = pOutPut & "<tr>" & vbcrlf
         Redim pColNames(pRec.Fields.Count)
         For x = 0 to pRec.Fields.Count - 1
             pOutPut = pOutPut & "<td>" & pRec.Fields(x).Name & "</td>" & vbcrlf
         Next
     End If
     pOutPut = pOutPut & "</tr>" & vbcrlf
     pArray = pRec.GetRows
     For x = 0 to UBound(pArray, 2)
         pOutPut = pOutPut & "<tr>" & vbcrlf
         For y = 0 to UBound(pArray, 1)
 pOutPut = pOutPut & "<td>" & pArray(y, x) & "</td>" & vbcrlf
         Next
         pOutPut = pOutPut & "</tr>" & vbcrlf
     Next
     pOutPut = pOutPut & "</table>" & vbcrlf
     Response.Write pOutPut
 End Sub

 

 

Basicamente, nós abrimos o recordset, se AutoColums = true então ficamos com os campos nomes e criamos células para eles ou vamos com o custom column names, então usamos o código para percorrer a nossa matriz de valores. Tudo isto está a ser concatenado a uma string de saída, que é finalmente escrito para o browser no final.

 

Usando a classe em uma página ASP, salve-o como DataGrid.asp em sua pasta wwwroot, foi usado o nwind.mdb para o banco de dados.

 

Estrutura do banco:

 

[nwind]

ID - autonum

Nome - texto

Profissão - texto

Fone - texto

 

 

<%@ LANGUAGE="VBSCRIPT" %>
<% option explicit %>
<% response.buffer=true %>
<html>
<head>
  <title>DataGrid Teste</title>
</head>
<!-- #include file="DataGrid.asp"-->
<body>
<%
dim meuDataGrid, mapPath
Set meuDataGrid= New caDataGrid
mapPath = "nwind.mdb"
' conexao
meuDataGrid.ConnectionString =  "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="& Server.MapPath(mapPath)
meuDataGrid.SqlString =  "select nome, profissao, fone from cadastro"
meuDataGrid.Bind
set meuDataGrid= nothing

'agora permite definir nossas próprias colunas
response.write "<br><br>"
Set meuDataGrid= New caDataGrid
meuDataGrid.ConnectionString =  "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="& Server.MapPath(mapPath)
meuDataGrid.SqlString =  "select nome, profissao, fone from cadastro"
meuDataGrid.AutoColumns = false
meuDataGrid.AddColumn("nome")
meuDataGrid.AddColumn("profissao")
meuDataGrid.AddColumn("fone")
meuDataGrid.Bind
set meuDataGrid= nothing
%>
</body>
</html>

 

Abaixo o código completo

<%
Class caDataGrid
  ' variaveis private
  private pAutoColumns, pConnStr, pSqlStr, intColCnt
  Private pOutPut, pConn, pRec, x, y, pArray

'este é executado quando você cria uma referência para a classe caDataGrid
  Private Sub Class_Initialize()
      Set pConn = server.createobject("adodb.connection")
      Set pRec = server.createobject("adodb.recordset")
      intColCnt = 0
      pAutoColumns = True
  End Sub

  'Propriedades - todos writable
  Public Property Let ConnectionString(strConn)
      pConnStr = strConn
  End Property

  Public Property Let AutoColumns(bAutoCols)
      If bAutoCols = True or bAutoCols = False then
          pAutoColumns = bAutoCols
      End IF
  End Property

  Public Property Let SqlString(strSql)
      pSqlStr = strSql
  End Property

  'Metodos  
  Public Sub AddColumn(strColName)
      If intColCnt = 0 then
          pOutPut = "<table width='100%' border=1 cellpadding=0 cellspacing=0>" & vbcrlf
          pOutPut = pOutPut & "<tr>" & vbcrlf
      End If
      pOutPut = pOutPut & "<td><strong>" & strColName & "</strong></td>" & vbcrlf
      intColCnt = intColCnt + 1
  End Sub

  Public Sub Bind
      pConn.Open pConnStr
      Set pRec = pConn.Execute(pSqlStr)
      If pAutoColumns = True then
   'atribuir nomes de coluna retornados
          pOutPut = "<table width='100%' border=1 cellpadding=0 cellspacing=0>" & vbcrlf
          pOutPut = pOutPut & "<tr>" & vbcrlf
          Redim pColNames(pRec.Fields.Count)
          For x = 0 to pRec.Fields.Count - 1
              pOutPut = pOutPut & "<td>" & pRec.Fields(x).Name & "</td>" & vbcrlf
          Next
      End If
      pOutPut = pOutPut & "</tr>" & vbcrlf
      pArray = pRec.GetRows
      For x = 0 to UBound(pArray, 2)
          pOutPut = pOutPut & "<tr>" & vbcrlf
          For y = 0 to UBound(pArray, 1)
  pOutPut = pOutPut & "<td>" & pArray(y, x) & "</td>" & vbcrlf
          Next
          pOutPut = pOutPut & "</tr>" & vbcrlf
      Next
      pOutPut = pOutPut & "</table>" & vbcrlf
      Response.Write pOutPut
  End Sub

'isso é quando finalizamos nossa referência caDataGrid
  Private Sub Class_Terminate()
      pOutPut = ""
      pRec.Close
      Set pRec = nothing
      pconn.close
      Set pConn = nothing
  End Sub

End Class
%>

 

 

divirta-se

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom Dia

 

Muito Obrigado Amigo! Muito Obrigado Mesmo, ajudou muito, Agora somente um duvida: AspGrid conseguo fz em oracle também sem problemas?

Compartilhar este post


Link para o post
Compartilhar em outros sites

tranquilamente, você consegue trabalhar com qualquer tipo de banco de dados

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.