listas desplegables condicionadas

13/01/2005 - 21:42 por Ignacio Betancor | Informe spam
Hola a todos

estoy intentando hacer un formulario donde con listas despeglabes eligas

familia

subfamilia

articulo

en donde solo aparecieran los subfamilias correspondientes a la familia
elegida,una vez elegida familia/subfamilia que aparecieran los articulos
solo pertenecientes a dicha familia/subfamilia,...

pero no he podido, en visual foxpro era metiendo controles en la
seleccion y condiciones del select y hacer refresh del formulario cada vez
que se hacia la selección, pero claro en asp solo lo he podido hacer con
formularios encadenados no queda muy operativo ni funcional, alguna
orientación,.

muchas gracias de antemano
 

Leer las respuestas

#1 Sandra y María Claudia
13/01/2005 - 22:13 | Informe spam
Hola Ignacio:
Te copio la rutina que uso para anidar desde 2 hasta 3 niveles.

Este es el código HTML-ASP que uso

<form name="elementos" action="test.asp">
<select name="categorias" size="1" onChange="reInitOptions()"
style="color: Black; font: normal x-small Arial;">
<option selected value="">Seleccione una Categoría</option>
<%
Temp="Select * From Categorias Order By Nombre"
Tabla1.Open Temp, Conexion
While Not Tabla1.EOF
%>
<option
value="<%=Tabla1.Fields("codigo")%>"><%=Tabla1.Fields("nombre")%></option>
<%
Tabla1.MoveNext
Wend
Tabla1.Close
%>
</select>
<br>
<script language="javascript">
var pause = false;
var style1 = document.elementos.categorias.options[0].text;
document.write("<select name='subcategorias' size='1'
onChange='reInitOptions1()' style='color: Black; font: normal x-small
Arial;'><option selected>Seleccione una sub-categoria</option>");
InitOptions();
document.write("<\/select>");
</script>
<br>
<script language="javascript">
var pause = false;
var style2 = document.elementos.subcategorias.options[0].text;
document.write("<select name='clases' size='1' style='color: Black;
font: normal x-small Arial;'><option selected>Seleccione una
clase</option>");
InitOptions1();
document.write("<\/select>");
</script>
</form>

Este es el código JavaScript correspondiente (obviamente va antes del código
anterior)

<script>
function fixSelect(val)
{
if (!pause)
{document.write("<option>"+val);}
else
{
var gr = document.elementos.subcategorias;
var valOption = new Option(val);
var valLen = gr.length;
gr.options[valLen] = valOption;
}
}

function fixSelect1(val)
{
if (!pause)
{document.write("<option>"+val);}
else
{
var gr = document.elementos.clases;
var valOption = new Option(val);
var valLen = gr.length;
gr.options[valLen] = valOption;
}
}

function InitOptions()
{
<%
Temp="Select * From Categorias Order By Nombre"
Tabla1.Open Temp, Conexion
While Not Tabla1.EOF
%>
if (style1=="<%= Tabla1.Fields("nombre") %>")
{
fixSelect("Seleccione una sub-categoria");
<%
Temp2="Select * From SubCategorias Where cod_categoria='" &
Tabla1.Fields("codigo") & "' Order By Nombre"
Tabla2.Open Temp2, Conexion
While Not Tabla2.EOF
%>
fixSelect("<%= Tabla2.Fields("nombre") %>");
<%
Tabla2.MoveNext
Wend
Tabla2.Close
Response.Write("}")
Tabla1.MoveNext
Wend
Tabla1.Close
%>
}

function InitOptions1()
{
<%
Temp="Select * From Categorias Order By Nombre"
Tabla1.Open Temp, Conexion
While Not Tabla1.EOF
Temp2="Select * From SubCategorias Where cod_categoria='" &
Tabla1.Fields("codigo") & "' Order By Nombre"
Tabla2.Open Temp2, Conexion
While Not Tabla2.EOF
%>
if (style2=="<%= Tabla2.Fields("nombre") %>")
{
fixSelect1("Seleccione una clase");
<%
Temp3="Select * From Clases Where cod_categoria='" &
Tabla1.Fields("codigo") & "' And cod_subcategoria='" &
Tabla2.Fields("cod_subcategoria") & "' Order By Nombre"
Tabla3.Open Temp3, Conexion
While Not Tabla3.EOF
%>
fixSelect1("<%= Tabla3.Fields("nombre") %>");
<%
Tabla3.MoveNext
Wend
Tabla3.Close
Response.Write("}")
Tabla2.MoveNext
Wend
Tabla2.Close
Tabla1.MoveNext
Wend
Tabla1.Close
%>
}

function reInitOptions()
{
var val = document.elementos.categorias;
var gr = document.elementos.subcategorias;
style1 = val.options[val.selectedIndex].text;
for (i=gr.length;i>0;i--)
{gr.options[0] = null;}
pause = true;
InitOptions();
gr.options[0].selected = true;
return false;
}

function reInitOptions1()
{
var val = document.elementos.subcategorias;
var gr = document.elementos.clases;
style2 = val.options[val.selectedIndex].text;
for (i=gr.length;i>0;i--)
{gr.options[0] = null;}
pause = true;
InitOptions1();
gr.options[0].selected = true;
return false;
}
</script>

Ojalá te sea útil

Suerte

____________________________________________________________________________________
SyMC
Suerte es la ayuda que te da la vida... Destino es lo que haces con esta
ayuda
Comparte con los demás, es la mejor manera de crecer y quererse más

Preguntas similares