segunda-feira, 20 de agosto de 2001

Criando um "VBGrid" em ASP

Muito bem, para criar a classe é preciso q vc configure algumas coisinhas bem simples.

Crie um aquivo chamado classe.asp com este conteudo:
====================================
<%
'====================================
'Ao "Voodoo" os respectivos creditos que foi
'quem criou a primeira versão da classe
'qualquer mudança q seja feita por favor, envie-nos
'uma cópia.
'cartman@apenas.com
'====================================


class MyGrid
 private DB, strSQL
 private strWidth, strAlign
 public sub Connect(strConnection)
  Set DB = Server.CreateObject("ADODB.Connection")
  DB.Open strConnection
 end sub
 
 public sub Disconnect()
  DB.Close
  Set DB = Nothing
 end sub
  
 public property let SQL(stSQL)
  strSQL = stSQL
   Dim Order
   Dim Field
   Dim gOrder
   Dim gField
   Dim Sort
   
   order = request.querystring("order")
   field = request.querystring("field")
   
   'caso a tabela tenha mais q dois campos eles devem se adicionados aqui!!!
   select case field
    case "1"
     gfield = " order by nome"
    case "2"
     gfield = " order by email"
    case else
     gfiel = ""
   end select
   
   select case order
    case "1"
     gOrder = " ASC"
    case "2"
     gOrder = " DESC"
    case else
     gOrder = ""
   end select
   
   if gOrder = "" or gField ="" then
    srtSQL = strSQL
   else
    strSQL = strSQL + gfield + gOrder
   end if
 end property


 public property let TableWidth(stWidth)
  strWidth = stWidth
 end property


 public property let TableAlign(stAlign)
  strAlign = stAlign
 end property
   
 public sub Display()
  if strWidth = "" then strWidth = "100%"
  Response.Write "<style type=text/css>"& vbCrLf & _
      " a:active {text-decoration: none; color: #000000; cursor: default;}"& vbCrLf & _
      " a:link  {text-decoration: none; color: #000000; cursor: default;}"& vbCrLf & _
      " a:visited {text-decoration: none; color: #000000; cursor: default;}"& vbCrLf & _
      " a:hover  {text-decoration: none; color: #000000; cursor: default;}"& vbCrLf & _
      " .TituloUP {"& vbCrLf & _
      "  background-color: #C0C0C0;"& vbCrLf & _
      "  border-bottom: #000000 solid 1px;"& vbCrLf & _
      "  border-right: #000000 solid 1px;"& vbCrLf & _
      "  border-left: #E8E8E8 solid 1px;"& vbCrLf & _
      "  border-top: #E8E8E8 solid 1px;"& vbCrLf & _
      "  height : 11px;"& vbCrLf & _
      "  cursor: default;"& vbCrLf & _
      "  font-family : Verdana, Arial, Helvetica, sans-serif;"& vbCrLf & _
      "  font-size : 11px;"& vbCrLf & _
      " }"& vbCrLf & _
      " .GridBody {"& vbCrLf & _
      "  background-color: #FFFFFF;"& vbCrLf & _
      "  border-bottom: #AAAAAA solid 1px;"& vbCrLf & _
      "  border-right: #AAAAAA solid 1px;"& vbCrLf & _
      "  height : 16px;"& vbCrLf & _
      "  font-family : Verdana, Arial, Helvetica, sans-serif;"& vbCrLf & _
      "  font-size: 11px;"& vbCrLf & _
      "  cursor: text;"& vbCrLf & _
      "  text-decoration: none;"& vbCrLf & _
      " }"& vbCrLf & _
      "</style>"& vbCrLf
  dim RS
  Set RS = Server.CreateObject("ADODB.Recordset")
   '*********************
   response.write strSQL
   '*********************
   RS.CursorLocation = 3
   RS.Open strSQL, DB
   
   order = request.querystring("order")
   
   select case order
    case 2
     order =1
    case 1
     order =2
    case else
     order =1
   end select
   
    Response.Write "<table width="& strWidth &" align="& strAlign &" cellspacing=0 cellpadding=0 align=center>"& vbCrLf
     Response.Write "  <tr>"& vbCrLf & _
         "    <td width=10 class=TituloUP ><a href="& Request.ServerVariables("SCRIPT_NAME") &">&nbsp;</a></td>"& vbCrLf
     'Desenha o cabeçalho
      Response.Write "    <td class=TituloUP ><a href="& Request.ServerVariables("SCRIPT_NAME") &"?order="& order &"&field=1>&nbsp;Campo1</a></td>"& vbCrLf
      Response.Write "    <td class=TituloUP ><a href="& Request.ServerVariables("SCRIPT_NAME") &"?order="& order &"&field=2>&nbsp;Campo2</a></td>"& vbCrLf
     Response.Write "  </tr>"& vbCrLf
     
     'Desenha os registros
     do until RS.EOF
      Response.Write "  <tr>"& vbCrLf
       Response.write "    <td width=10 class=TituloUP>&nbsp;</td>"& vbCrLf
       Response.Write "    <td class=GridBody>&nbsp;"& RS("nome") &"</td>"& vbCrLf
       Response.Write "    <td class=GridBody>&nbsp;"& RS("email") &"</td>"& vbCrLf
      Response.Write "  </tr>"& vbCrLf
      RS.MoveNext
     loop
    Response.Write "</table>"& vbCrLf & _
        "</td></tr></table>"& vbCrLf
   RS.Close
  Set RS = Nothing
 end sub
end class
%>
========================================

Agora crie outro aquivo qualquer com este conteudo ( no mesmo diretorio onde esta o classe.asp

========================================
<!--#include file="classe.asp"-->
<!--este include é obrigatprio pq é a classe q monta a tabela-->


<%
dim grid
set grid = new MyGrid
 grid.Connect "DBQ=c:\inetpub\wwwroot\webtal\database\webtal.mdb;Driver={Microsoft Access Driver (*.mdb)};"
'Aqui vc coloca sua string de conexão

 grid.SQL = "select codigo,nome,email from mural"
'Aqui vc coloca a sua query

 grid.TableWidth = "98%"
'Aqui vc coloca o tamanho da tabela

 grid.TableAlign = "center"
'Aqui vc coloca o alinhamento da tabela

 grid.Display
 grid.Disconnect
set grid = nothing

%>


=======================================

Caso vc preciso mudar alguma coisa na classe fique a vontade.
Não se esqueçe a ela esta configurada para mostrar, inicialmente um recordset com o nome "nome" e outro com o nome "email".
Mude se necessário.



Esta matéria foi postada originalmente no ASP4Developers por Ismael Nobre (site), que na época era "Analista.
Quer me contratar ?
Cel. 96420687". Hoje, vai saber...

0 comentários: