Despues de varios reclamos por no saber cual es la solucion me di el trabajo de ver cual era el problema.
Con lo que posteo lo unico que falta es que quede seleccionado el primer option dinamico, pero es eso algo cosa de usar el selectedindex y listo.
espero les sirva.
Código:
<HTML> <HEAD> <TITLE>Listas dependientes</TITLE> </HEAD> <!--inicializa las listas bakanzipp--> <BODY onload="Cargar();"> <!-- Listas dependientes por Carlos de la Orden Dijs 17 de Diciembre de 2000 ---> <H2><CENTER>Listas dinámicas dependientes</CENTER></H2> <P><B>Elige una categoría para ver los productos pertenecientes a ella:</B> <P> <FORM NAME="Listas" METHOD="POST" ACTION="receive.asp"> <B>Categorías</B> <!-- el onchange viene con un flag de validacion para netscape bakanzipp--> <SELECT NAME="Categorias" SIZE="1" OnChange="ComponerLista (document.forms.Listas.Categorias[selectedIndex].value,false);"> <% Dim oConn, rs, SQL, cuenta, categoria set oConn=Server.CreateObject("ADODB.Connection") set rs=Server.CreateObject("ADODB.Recordset") oConn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("ejemplo.mdb") SQL="SELECT * FROM Categorias" rs.Open SQL, oConn cuenta=1 while not rs.EOF %> <OPTION VALUE="<%=rs.Fields("IdCategoria")%>" <% if cuenta=1 then%> SELECTED <%end if%>> <%=rs.Fields("NomCategoria")%></OPTION> <% rs.MoveNext cuenta=cuenta+1 wend rs.Close %> </SELECT> <P><B>Productos</B> <!-- se agrega un width y heigth para que se visualice las opciones para netscape 4.7x bakanzipp--> <SELECT NAME="Productos" SIZE="1" width=200 height=300> </SELECT> <P><INPUT TYPE="submit"></FORM> <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 SQL="SELECT * FROM Productos ORDER BY Categoria, IdProducto" rs.Open SQL, oConn cuenta=0 cat="basura" while not rs.EOF if cat<>rs.Fields("Categoria") then ' cambio de categoria, empiezo a contar en 0 cuenta=0 cat=rs.Fields("Categoria") '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("Nombre")%>","<%=rs.Fields("IdProducto")%>"); <% cuenta=cuenta+1 rs.MoveNext wend %> <% 'Limpiamos objetos rs.Close set rs=nothing oConn.Close set oConn=nothing %> var contador; //el componer lista recibe un flag para el tema de netscape 4.7x bakanzipp function ComponerLista ( array, flag ) { // 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 ); document.Listas.Productos.options[contador] = optionObj; } // for } // ComponerLista function BorrarLista() { document.Listas.Productos.length=0; } //Inicializamos //funcion modificada con un flag de inicializacion bakanzipp function Cargar() { var seleccion="1"; var flag; if (seleccion!="") { flag=true; ComponerLista (seleccion,flag); } else { flag=false; ComponerLista (0,flag); } } </SCRIPT> <br> </FORM> </BODY> </HTML>