Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/06/2004, 06:34
enchodebacon
 
Fecha de Ingreso: junio-2004
Mensajes: 52
Antigüedad: 20 años, 11 meses
Puntos: 0
Exclamación Combos enlazados

Hola, tengo 2 combos ke tienen ke estar enlazados, es decir ke cuando de elige un valor del 1º(previamente los datos los cargo de una base de datos) Se tiene ke cargar los valores en relacion al valor elegido en la 1º lista.

El código ke tengo es este:
Código:
<form action="" name="form1">
<select name="select" class="normalform" onChange = "ComponerLista(document.forms.form1.select[selectedIndex].value);">
<option>Especialidades</option>
<% 
dim con,rs,sql,cuenta,cat
Set db = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
con="DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & server.MapPath("/riojavina/bbddRiojavina.mdb")
db.open con
set rs=db.execute("Select distinct NomVariedad From Productos")
do while not rs.EOF
Response.Write "<option Value='" & rs.fields("NomVariedad") & "'>" & rs.fields("NomVariedad") & "</option>"
rs.MoveNext
Loop
rs.Close()
rs=null
db.Close()
%>
</select>
<p> 
<select name="menu1" class="normalform" onChange="MM_jumpMenu('parent',this,1)">
<option selected>Productos </option>
</select>
<SCRIPT LANGUAGE="Javascript">
<!--
function Tupla ( campo1, campo2 )
{
this.campo1 = campo1;
this.campo2 = campo2;
}
<%
'Vamos a crear nuestros arrays de productos desde ASP
'El primer if detecta un cambio en la categoría para
'crear un nuevo array en Javascript
						

db.open con
set rs=db.execute("SELECT * FROM Productos ORDER BY NomProducto")
cuenta=0
cat="basura"
do while not rs.EOF 
if cat<>rs.Fields("NomVariedad") then
'cambio de categoria, empiezo a contar en 0
cuenta=0
cat=rs.Fields("NomVariedad")
'además tengo que crear un nuevo array para la categoría
%>
var opciones<%=cat%> = new Array();
<%
end if
%>
opciones<%=cat%>[<%=cuenta%>]=new Tupla("<%=rs.Fields("NomProducto")%>","<%=rs.Fields("EAN")%>");
<%
cuenta=cuenta+1
rs.MoveNext
Loop
%>
<%
'Limpiamos objetos
rs.Close()
rs=null
db.Close()
%>
var contador;

function ComponerLista (array) 
{
// Compone la lista dependiente a partir
// del valor de la opcion escogida en la lista "padre"
BorrarLista();
array = eval("opciones" + array);
for (contador=0; contador<array.length; contador++) 
{
// añade elementos nuestro combobox
var optionObj = new Option( array[contador].campo1, array[contador].campo2 );
form1.menu1.options[contador] = optionObj;
} // for
} // ComponerLista
							
function BorrarLista() 
{
form1.menu1.length=0;
}
//Inicializamos
ComponerLista (1);
-->
</SCRIPT>
</p></form>
Me carga los datos desde la base de datos en el 1º select, lo ke no me hace es cargarmelos en el segundo despues de seleccionar en el 1º

Muxas gracias