..:: MX Studio Fóruns ::..: Dropdown lists dinâmicas com propriedade Filter do recordset - ..:: MX Studio Fóruns ::..

Jump to content

Publicidade




Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Dropdown lists dinâmicas com propriedade Filter do recordset

#1 User is offline   xanburzum 

  • Group: Administrador
  • Posts: 2075
  • Joined: 04-November 08

Posted 07 June 2009 - 05:20 PM

Dropdown lists em HTML são muito úteis para opção múltiplas escolhas , principalmente dentro de um formulário que o usuário necessita preencher.

Produzir-los dinamicamente a partir de uma base de dados pode poupar muito tempo e energia.

Neste exemplo, iremos usar ASP 3.0 a gerar dinâmicas dropdown listas a partir de uma base de dados Microsoft Access:
Em um bd chamado,dropdowns com uma tabela chamada table, com os seguintes campos:

ID - autonum
Titulo - text
Comentário - text

O campo ID é definido como uma AutoNumeração, neste caso, os outros dois campos são estabelecidos como campos texto , com o título com um limite de 50 caracteres e comentários com um limite de 255 caracteres.

Agora, o código para construir uma página HTML com uma lista suspensa preenchida com os dados.

CÓDIGO
<%@LANGUAGE="VBSCRIPT" %>
<%
Option Explicit
'-- Variáveis que estamos usando
dim objConn, objRS, objRS2, strSQL
  
'-- Define objetos
Set objConn = Server.CreateObject("ADODB.Connection")
Set objRS = Server.CreateObject("ADODB.Recordset")
Set objRS2 = Server.CreateObject("ADODB.Recordset")
  
'-- Database path e Data provider
objConn.ConnectionString = Server.MapPath("dropdowns.mdb")
objConn.Provider = "Microsoft.Jet.OLEDB.4.0"
objConn.Open
  
'-- Sub Procedure que constrói a dropdown list.
'-- Parâmetros C, R e table são transmitidos quando a sub é construída.
Sub showDropDownList(c, r, table)

'-- SQL Statement
strSQL = "SELECT * FROM " & table & " ORDER BY Title ASC"
'-- Executa SQL e armazena o recordset
Set r = c.Execute(strSQL)

'-- Se temos registros para retornar
if not r.eof = false then
Response.Write "<form name=""form1"">"
Response.Write "<select name=""dropdownlist"">" & vbCrLf
Response.Write "<option selected=""selected"" value="""">Selecione....</option>"

'-- loop e constroi cada entrada de dados como uma opção selecionável
While r.EOF = false
Response.Write "<option value=""dynamic_dropdown_lists.asp"">"
_ & r.Fields("Title").Value & "</option>" & vbCrLf

'-- Move recordset para proximo valor
r.movenext
Wend
end if
Response.Write "</select></form>" & vbCrLf

End Sub
  
%>

<html>
<head>
<title>Dynamic dropdown</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
  
<body>
<p>Abaixo um exemplo de popular uma drop down list dinamicamente.</p>
  
<p>
<%
' -- Chame a procedure para construir a drop down list
call showDropDownList(objConn, objRS, "tblDropDownTest")
%>
</p>

</body>
</html>


Como você pode ver, a lista suspensa é preenchida com os valores de dados, ordenados AZ.

Estamos mostrando frutas e vegetais na lista, sem qualquer separação. Então, o que se quisesse fazer uma distinção entre as frutas e vegetais no interior da lista suspensa, até para quebrar a lista em 2 seções?. Temos de alterar um pouco o nosso código , o que irá filtrar o recordset para Frutas e exibir os resultados e, em seguida, para filtro Vegetais e exibir os resultados.

Em primeiro lugar, vamos acrescentar um novo campo para a nossa tabela de dados, denominado tipo. Nossos dados agora parece com isto:

O campo "Tipo" é um campo de texto, com um limite de 5 caracteres

Precisamos alterar While..Wend loop next, a fim de produzir uma lista suspensa com 2 secções distintas, uma para as frutas e uma de veg. Cada seção serão ordenados A-Z.

CÓDIGO
if r.eof = false then

'-- tag form/select
Response.Write "<form name=""form1"">"
Response.Write "<select name=""dropdownlist"">" & vbCrLf

'-- loop e construir cada entrada de dados como uma opção selecionável
'-- FILTER
r.Filter = ("Type = 'fruta'")

Response.Write "<option selected=""selected"" value="""">Selecione....</option>"
Response.Write "<optgroup label=""Fruita""></optgroup>"

While r.EOF = false
Response.Write "<option value=""dynamic_dropdown_lists.asp"">"
_ & r.Fields("Title").Value & "</option>" & vbCrLf

'-- Move recordset para next value
r.movenext
Wend

r.Filter = adFilterNone

r.Filter = ("Type = 'vegetais'")
Response.Write "<optgroup label=""Vegetais""></optgroup>"

While r.EOF = false
Response.Write "<option value=""dynamic_dropdown_lists.asp"">"
_ & r.Fields("Title").Value & "</option>" & vbCrLf

'-- Move recordset para next value
r.movenext
Wend

end if


Para o nosso 2 tipos, (Frutas e Vegetais) apresentamos como posições na lista, utilizando a tag HTML <optgroup>. O atributo label define o que será exibido como texto na lista.

A função denominada "filter" está sendo usado para filtrar o nosso objeto recordset ®, para o tipo "Frutas". Tipo é o nome do campo dentro do banco de dados que se referem.

Uma vez que temos o nosso recordset filtrado para todas as frutas, o recordset agora contém apenas registos em que o tipo é Frutas, para que possamos através do loop de todo o recordset e exibir todos os resultados. Para retirarmos o filtro usando o ADO predefinidos constante como adFilterNone.
Este é um exemplo de Dropdown lists dinâmica usando o filter do recordset.
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic


Similar Topics Collapse

  Topic Forum Started By Stats Last Post Info
New Replies exibir por data
recordset
Dreamweaver Bessa 
  • 4 Replies
  • 1018 Views
New Replies Ajuda ao conectar MySQL com ASP
por favor é vida ou morte
ASP rafaelbech 
  • 3 Replies
  • 1614 Views
New Replies Brasil terá um computador para cada dois habitantes em 2012 Notícias Notícias 
  • 0 Replies
  • 57 Views
New Replies MSN (hp e messenger)
problemas com flash
Dúvidas Gerais PHPG 
  • 0 Replies
  • 1461 Views
New Replies duvida com addChild
movieClip do addChild so começar quando for chamado
Flash & ActionScript pjsas 
  • 2 Replies
  • 249 Views
New Replies ASP TREEVIEW + BD ACCESS
Queria saber como fazer..
Outros MXDesign 
  • 0 Replies
  • 1165 Views
New Replies Empresa de redes sociais dos EUA compra produtora brasileira de jogos Notícias Notícias 
  • 0 Replies
  • 48 Views
New Replies Como usar corretamente o Debug do Flash ?
Uso do Debug
Flash & ActionScript skyphill 
  • 0 Replies
  • 778 Views

Publicidade




1 User(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)