Ir para conteúdo

POWERED BY:

Arquivado

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

frostlost

Duas Combos Dinâmicas

Recommended Posts

Bom dia, estou precisando de uma ajuda, ou seja carregar dinamicamente duas combos, a primeira delas já está dando certo (no caso a COMBO categorias). Mas o que eu preciso é no evento onchange da 1º combo carregar a tabela subcategorias com os campos pertinentes relacionados a tabela categoria. Tenho pouca habilidade com ASP e uso o Dreamweaver para gerar o codigo (que segue abaixo), O que é preciso mudar no codigo de baixo para carregar a combo nº 2 dinamicamente no evento onchange da primeira. Por favor se possivel modifique o codigo abaixo e enviem de volta. Obrigado:<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%><!--#include file="file:///C|/inetpub/wwwroot/combo/Connections/combo2.asp" --><%Dim consulta1Dim consulta1_numRowsSet consulta1 = Server.CreateObject("ADODB.Recordset")consulta1.ActiveConnection = MM_combo2_STRINGconsulta1.Source = "SELECT * FROM categorias ORDER BY categoria ASC"consulta1.CursorType = 0consulta1.CursorLocation = 2consulta1.LockType = 1consulta1.Open()consulta1_numRows = 0%><%Dim consulta2__MMColParamconsulta2__MMColParam = "1"If (Request.QueryString("select1") <> "") Then consulta2__MMColParam = Request.QueryString("select1")End If%><%Dim consulta2Dim consulta2_numRowsSet consulta2 = Server.CreateObject("ADODB.Recordset")consulta2.ActiveConnection = MM_combo2_STRINGconsulta2.Source = "SELECT * FROM subcategorias WHERE idcategoria = " + Replace(consulta2__MMColParam, "'", "''") + " ORDER BY subcategoria ASC"consulta2.CursorType = 0consulta2.CursorLocation = 2consulta2.LockType = 1consulta2.Open()consulta2_numRows = 0%><html><head><title>Documento sem título</title><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head><body><form name="form1" method="post" action=""> <p>Categoria: <select name="select"> <%While (NOT consulta1.EOF)%> <option value="<%=(consulta1.Fields.Item("idcategoria").Value)%>"><%=(consulta1.Fields.Item("categoria").Value)%></option> <% consulta1.MoveNext()WendIf (consulta1.CursorType > 0) Then consulta1.MoveFirstElse consulta1.RequeryEnd If%> </select> </p> <p>SUBCATEGORIA: <select name="select2"> <%While (NOT consulta2.EOF)%> <option value="<%=(consulta2.Fields.Item("idsubcategoria").Value)%>"><%=(consulta2.Fields.Item("subcategoria").Value)%></option> <% consulta2.MoveNext()WendIf (consulta2.CursorType > 0) Then consulta2.MoveFirstElse consulta2.RequeryEnd If%> </select> </p> <p>  </p> </form></body></html><%consulta1.Close()Set consulta1 = Nothing%><%consulta2.Close()Set consulta2 = Nothing%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

e ai beleza ?? eu não li seu codigo... mais vou te passar a logica de como fazer issoquando você for dar um refresh na pagina passa via querystring o valor que o usuario selecionou...<select name="estado" onChange="location.replace('pagina.asp?uf='+form.estado.value)"><option value="SP">São Paulo</option><option value="MG">Minas Gerais</option>dai no começo da pagina você faz uma verificação assim + ou - :<%var = request.querystring("uf") If var = "" Then exibe o codigo da pagina só com o primeiro select preenchidoelseexibe o codigo da pagina com a query pro segundo comboSELECT * FROM tabela WHERE estado = '"& var &"'End If%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

OBrigado, a primeira parte já me serviu, estou dando um refresh na mesma página, acontece que não estou conseguindo persistir os dados do primeiro combo, existe alguma forma de manter o valor selecionado no 1º combo?Valeu!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom, eu tbm nao li seu codigo hehehemais tipo se você passou via queryString o "value" do combo1 para a pagina, basta você fazer dentro do loop q gera a combo1 um if tipo:if(request.querystring("valorRecebido") = banner_top.swf) thenresponse.write "<option value=" &banner_top.swf& " selected><option>"elseresponse.write "<option value=" &banner_top.swf& "><option>"end iffalowww

Compartilhar este post


Link para o post
Compartilhar em outros sites

Chefe, tb num lí o teu código nao mas acho que sei oq ue você tá afim de fazer. vê se é isso: você tá querendo carregar o segundo combo de acordo com o que foi selecionado no primeiro, certo? Entao, tenta esse Javascript danado aí ó!!!

 

<script type="text/javascript">try{	xmlhttp = new XMLHttpRequest();}catch(ee){	try{		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");	}catch(e){		try{			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");		}catch(E){			xmlhttp = false;		}	}}function doBusca(NOME_DA_BUSCA){	//limpa o select	var m=document.getElementById("ID_DO_2COMBO")	while(m.options.length>0)m.options[0]=null	m.options[0]=new Option(" -- Aguarde ... -- "," -- Aguarde ... -- ")	//Monta a url com a uf	xmlhttp.open("GET", "busca2.asp?NOME_DA_BUSCA="+NOME_DA_BUSCA,true);	xmlhttp.onreadystatechange=function() {		if (xmlhttp.readyState==4){			//limpa o select			var m=document.getElementById("ID_DO_2COMBO")			while(m.options.length>0)m.options[0]=null			//Transforma a lista em Javascript			var aID_DO_2COMBO=eval((xmlhttp.responseText))			//popula o select com a busca obtida			for(var i=0;i<aID_DO_2COMBO.length;i++){				aID_DO_2COMBO[i]=unescape(aMes[i])				m.options[m.options.length]=new Option(aID_DO_2COMBO[i],aID_DO_2COMBO[i])			}		}	}	xmlhttp.send(null)}

 

E no <select> que tá pegando os dados pro segundo combo

 

<label for="NOME_DA_BUSCA"><span class="texto">Ano:</span><select name="NOME_DA_BUSCA" id="NOME_DA_BUSCA" onchange="doBusca(this.options[this.selectedIndex].value)"><option value="--">--</option><%if not Rs_NOME_DA_BUSCA.EOF thenwhile not Rs_NOME_DA_BUSCA.eof%><option value="<%=Rs_NOME_DA_BUSCA("CAMPO")%>"><%=Rs_NOME_DA_BUSCA("CAMPO")%></option><%Rs_NOME_DA_BUSCA.movenextWendEnd If%></select></label>

 

Salva a busca num documento separado (busca2.asp) e já é!

 

qq coisa me fala aí...

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.