Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Fala pessoal...
To com um problema nesse formulário aqui...
http://www.infodica.com.br/desenv/testes/teste4.asp
Estou usando ASP + AJAX + SQL Server pra carregar as combos...
Aparentemente tudo funciona, mas vai ai um exemplo:
Marque o Estado "RJ", depois qualquer cidade, depois qualquer bairro...
Em seguida quando você muda o Estado, a cidade muda corretamente, mas o Bairro continua...
Seguem os codigos abaixo...
Arquivo ObjEstado.asp
<!--#include file="../INC/AbreConexao.asp"-->
<!--#include file="../INC/LibFuncoes.asp"-->
<%
' defino o recordset
Set RS = server.createobject("ADODB.RecordSet")
'Recupero as variaveis
estado_cd_codigo = request("estado_cd_codigo")
cidade_cd_codigo = request("cidade_cd_codigo")
SQL = "SELECT E.ESTADO_CD_CODIGO, E.ESTADO_TX_NOME, C.CIDADE_TX_NOME, C.CIDADE_CD_CODIGO " &_
"FROM ESTADOS E " &_
"INNER JOIN CIDADES C ON C.ESTADO_CD_CODIGO = E.ESTADO_CD_CODIGO " &_
"WHERE E.ESTADO_CD_CODIGO = '" & estado_cd_codigo & "' order by C.CIDADE_TX_NOME"
'response.Write(sql)
'response.End()
RS.Open SQL, CnInfo
%>
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td>
<select style="width:200" id="cidade" name="cidade" onChange="dadoscidade(this.value);">
<%
If not RS.EOF Then
while not RS.EOF
'if CStr(estado_cd_codigo) = Cstr(RS("ESTADO_CD_CODIGO")) then
' selected = "selected"
'else
' selected = ""
'end if
%>
<option value="<%Response.Write(RS("CIDADE_CD_CODIGO"))%>" ><% Response.Write(RS("CIDADE_TX_NOME"))%></option>
<%
RS.MoveNext
wend
RS.close
set RS = nothing
Else
%>
<option value="0" >Nenhuma Cidade Cadastrada</option>
<% End If %>
</select>
</td>
</tr>
</table>Arquivo ObjImovel -> que é o dos Bairros
<!--#include file="../INC/AbreConexao.asp"-->
<!--#include file="../INC/LibFuncoes.asp"-->
<%
' defino o recordset
Set RS = server.createobject("ADODB.RecordSet")
'Recupero as Variaveis
estado_cd_codigo = request("estado_cd_codigo")
cidade_cd_codigo = request("cidade_cd_codigo")
SQL = "SELECT C.CIDADE_TX_NOME, C.CIDADE_CD_CODIGO, B.BAIRRO_CD_CODIGO, B.BAIRRO_TX_NOME " &_
"FROM CIDADES C INNER JOIN BAIRROS B " &_
"ON C.CIDADE_CD_CODIGO = B.CIDADE_CD_CODIGO " &_
"WHERE B.CIDADE_CD_CODIGO = '" & cidade_cd_codigo & "' ORDER BY B.BAIRRO_TX_NOME"
'response.Write(SQL)
'response.End()
RS.Open SQL, CnInfo
%>
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td>
<select style="width:200" id="imovel" name="imovel">
<%
If not RS.EOF Then
while not RS.EOF%>
<option value="<%Response.Write(RS("BAIRRO_CD_CODIGO"))%>"><% Response.Write(RS("BAIRRO_TX_NOME"))%></option>
<%
RS.MoveNext
wend
RS.close
set RS = nothing
Else
%>
<option value="0" >Nenhum Bairro Cadastrado</option>
<% End If %>
</select>
</td>
</tr>
</table>Arquivo Index que chama os outros
<%@LANGUAGE="VBSCRIPT"%>
<%Option Explicit%>
<!--#include file="../INC/AbreConexao.asp"-->
<!--#include file="../INC/LibFuncoes.asp"-->
<%
'Declaracao das variaveis
'Usadas no Banner
Dim SQL, RS1, RS2, RS3, RS, estado_cd_codigo, cidade_cd_codigo, bairro_cd_codigo
Dim valorRS1, valorRS2, valorRS3
Dim nLinha, color, Id, Caminho, vCaminho, Id2, Id3, Id4, Id5, URL, vURL, Id6
%>
<html>
<head>
<link rel="stylesheet" href="../css/estilos.css" type="text/css" />
</head>
<body><script language="javascript" src="ajax.js"></script>
<FORM method="post" name="frm1" id="frm1">
<select style="width:200" id="estado" name="estado" onchange="trazdados();">
<option value="0">Selecione o Estado</option>
<% while not RS.EOF %>
<option value="<%=RS("ESTADO_CD_CODIGO")%>"><%=RS("ESTADO_TX_NOME")%></option>
<% RS.MoveNext
wend
RS.close
set RS = nothing
%>
</select><br>
<span id='divcombouf'>
<select style="width:200" id="cidade" name="cidade" onChange="dadoscidade();">
<option value="0">Selecione a Cidade</option>
</select><br>
</span>
<span id='divcomboimovel'>
<select style="width:200" id="imovel" name="imovel">
<option value="0">Selecione o Bairro</option>
</select>
</span>
<input type="hidden" name="estado_cd_codigo" id="estado_cd_codigo" value="<%=estado_cd_codigo%>" size="3">
<input type="hidden" name="cidade_cd_codigo" id="cidade_cd_codigo" value="<%=cidade_cd_codigo%>" size="3">
<input type="hidden" name="bairro_cd_codigo" id="bairro_cd_codigo" value="<%=bairro_cd_codigo%>" size="3">
</form>
</body>
</html>
<script>
//ESSA FUNÇÃO IRÁ TRAZER O ID DO ESTADO SELECIONADO NA PRIMEITA COMBO PARA PODERMOS PREENCHER A SEGUNDA E TERCEIRA COMBO.
function trazdados()
{
//AQUI "INFORMAMOS" QUE O PRIMEIRA COMBO SERÁ SELECIOANDA E DEPOIS DAMOS UM SPLIT NA BARRA (|) QUE
//SEPARA OS VALORES QUE ESTÃO NO VALUE DA COMBO1. SE você'S EXIBREM O CÓDIGO FONTE NO BROWSER VERÃO QUE A COMBO1 ESTARÁ ASSIM:
// IDESTADO | NOMEESTADO.
var arr = new String(frm1.estado.value);
// arr = arr.split('|');
//AQUI TRAZEMOS APENAS O ID DE CADA ESTADO QUE FOR SELECIONADO.
frm1.estado.value = arr;
combocidade(); //CHAMA A FUNÇÃO AJAX QUE PREENCHER A COMBO CIDADE, ASSIM QUE É SELECIONADO UM REGISTRO NA COMBO1.
comboimovel(); //CHAMA A FUNÇÃO AJAX QUE PREENCHER A COMBO IMÓVEK, ASSIM QUE É SELECIONADO UM REGISTRO NA COMBO1.
}
//AQUI É A FUNÇÃO QUE PREENCHE A COMBO CIDADE.
//NÃO VOU ME APROFUNDAR NA EXPLICAÇÃO DESSA FUNÇÃO, JÁ QUE NOS OUTROS ARTIGOS QUE FIZ SOBRE AJAX, TEM A EXPLICAÇÃO SOBRE ELA.
//MAS REPAREM NO NOME DA DIV QUE DEMOS AQUI: divcombouf. É O MESMO NOME QUE DEMOS NO ID DAQUELA DIV QUE EXISTE ANTES DA COMBO2 NA PÁGINA.
function combocidade()
{
var combouf = createXMLHTTP();
combouf.open("post", "objestado.asp", true);
combouf.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
combouf.onreadystatechange=function(){
if (combouf.readyState==4){// abaixo o texto do gerado no arquivo executa.asp e colocado no div
document.all.divcombouf.innerHTML = combouf.responseText;}}
combouf.send("estado_cd_codigo=" + frm1.estado.value);
}
//AQUI É A FUNÇÃO QUE SERÁ PREENCHIDA DE ACORDO COM O REGISTRO SELECIONADO NA COMBO1 E NA COMBO2.
//A EXPLICAÇÃO DA FUNÇÃO ACIMA VALE PARA ESSA TAMBÉM, JÁ QUE SÃO IGUAIS.
function comboimovel()
{
var comboimovel = createXMLHTTP();
comboimovel.open("post", "objimovel.asp", true);
comboimovel.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
comboimovel.onreadystatechange=function(){
if (comboimovel.readyState==4){// abaixo o texto do gerado no arquivo executa.asp e colocado no div
document.all.divcomboimovel.innerHTML = comboimovel.responseText;}}
comboimovel.send("estado_cd_codigo=" + frm1.estado.value + "&cidade_cd_codigo="+frm1.cidade.value);
}
//NESTA FUNÇÃO IREMOS OBTER O ID DA CIDADE. E PRA QUE PRECISAMOS DELA? PARA PREENCHER A COMBO IMÓVEL.
//A COMBO IMÓVEL SÓ TRARÁ REGISTROS DE ACORDO COM O REGISTRO SELECIONADO NA COMBO2.
//A EXPLICAÇÃO DA FUNÇÃO TRAZDADOS TAMBÉM VALE PARA ESSA.
function dadoscidade()
{
var arr = new String(frm1.cidade.value);
// arr = arr.split("|");
frm1.cidade.value = arr;
//VEJA QUE CHAMAMOS A FUNÇÃO QUE PREENCHE A COMBO IMÓVEL, DEPOIS QUE UM REGISTRO DA COMBO CIDADE É SELECIONADA.
comboimovel();
}
//VOCÊS DEVEM TER REPARADO QUE NAS FUNÇÕES combocidade E comboimovel EXISTEM ESSE CAMINHO OBJETO/NOMEDOARQUIVO.ASP. CERTO?
//PORQUE CRIEI? PORQUE SE NO SEU SISTEMA VOCÊ PRECISAR USAR UMA DESSAS COMBOS, VOCÊ CHAMA APENAS O OBJETO.
//É COMO TRABALHAR COM ORIENTAÇÃO A OBJETOS.
//VEJA A EXPLICAÇÃO DAS PÁGINAS LOGO ABAIXO:
</script>
</body>Alguem me ajuda pleasseee!!
Carregando comentários...