Foros del Web » Programando para Internet » ASP Clásico »

problema con combos dependientes

Estas en el tema de problema con combos dependientes en el foro de ASP Clásico en Foros del Web. hola amigos tengo 4 combos dependientes. cuando cambio el 1ero combo me refresca todos los demas y eso esta bien . el problema es que ...
  #1 (permalink)  
Antiguo 12/04/2008, 22:55
 
Fecha de Ingreso: febrero-2004
Ubicación: horcon
Mensajes: 133
Antigüedad: 21 años, 3 meses
Puntos: 1
problema con combos dependientes

hola amigos tengo 4 combos dependientes.

cuando cambio el 1ero combo me refresca todos los demas y eso esta bien .

el problema es que al refrescar el 1er combo o el 2do o el 3ero me toma el valor que tenia antes de hacer el submit.

NOTA: TODOS LOS SUBMIT SE HACEN EN EL ONCHAGE DE CADA COMBO

por ejemplo:si yo tenia seleccionado en el 1er combo una marca de auto ford y en el segundo combo todos los modelos de la marca ford,

luego realizo una nueva seleccion de marca por ejemplo nissan me refresca la pagina con los modelos de nisan pero cuando hizo el submit la pagina me tomo el valor anterior de los modelo en este caso me tomaria los modelos de ford que ya estaban seleccionados, y el resultado que me da la busqueda no es el que se elijio ,

bueno es medio enredado el problema pero no se como explicarlo de otra forma.

YO ENCONTRE UNA SOLUCION PERO NO ES LA MAS OPTIMA DE REFRESCAR DOS VECES LA PAGINA , Y POR ESO QUIERO OTRA IDEA PARA PODER IMPLEMENTARLA MUCHAS GRACIAS TRABAJO EN ASP CON UNA BASE DE DATOS SQL SERVER
__________________
pato
  #2 (permalink)  
Antiguo 12/04/2008, 23:00
Avatar de i_e_s27  
Fecha de Ingreso: marzo-2008
Ubicación: En mi casa
Mensajes: 208
Antigüedad: 17 años, 1 mes
Puntos: 5
Re: problema con combos dependientes

Hola, y porque no haces que se llenen los combos con JavaScript en vez de tener que recargar la pagina cada vez que seleccione algun combo? Con JavaScript podras tener todas las opciones ya pre-cargadas.

En este post deje un ejemplo de combos dependientes llenados con JavaScript.

Espero que te sirva.

Saludos!
  #3 (permalink)  
Antiguo 12/04/2008, 23:17
 
Fecha de Ingreso: febrero-2004
Ubicación: horcon
Mensajes: 133
Antigüedad: 21 años, 3 meses
Puntos: 1
Re: problema con combos dependientes

buena solucion amigo pero creo que el submit igual lo tendria que hacer para cada combo para que me muestre los resultados por cada seleccion que hizo el usuario me explico .
__________________
pato
  #4 (permalink)  
Antiguo 12/04/2008, 23:51
Avatar de i_e_s27  
Fecha de Ingreso: marzo-2008
Ubicación: En mi casa
Mensajes: 208
Antigüedad: 17 años, 1 mes
Puntos: 5
Re: problema con combos dependientes

No entendiste lo que yo trate de explicarte:

El submit solo lo utilizas en el boton Enviar.

Los combos dependientes son llenados con la funcion RellenarCombo de JavaScript creada dinamicamente con ASP.

La funcion se dispara en el evento OnChange del Combo Padre.

Cada opcion que pueda contener el combo dependiente ya esta cargado en la pagina del usuario, y se cambiara dinamicamente con JavaScript.

Para que entiendas mas facil aca te muestro el codigo HTML que genero con la pagina asp que te puse en el link:

Código:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Ejemplo Combos Anidados/Dependientes</title>


<script language = "JavaScript">
function RellenarCombo(ComboPadre, ComboDependiente, IDSelected) {
  
  IDsSubcategorias = new Array();
  IDsSubcategorias = ['7','8','9','10','11','12','13','14'];
  
  NombresSubcategorias = new Array();
  NombresSubcategorias = ['AMD','Intel','Nvidia','ATI','HP','Lexmark','Canon','Toshiba'];
  
  AsociacionSubcategorias = new Array();
  AsociacionSubcategorias = ['7','7','20','20','1','1','1','17'];
  
  var IDItemSeleccionado = ComboPadre.options[ComboPadre.selectedIndex].value;
  ComboDependiente.length = 0;
  for (var i in IDsSubcategorias) {
    if (AsociacionSubcategorias[i] == IDItemSeleccionado) {
      ComboDependiente.options[ComboDependiente.length] = new Option(NombresSubcategorias[i], IDsSubcategorias[i]);
	  if (IDsSubcategorias[i] == IDSelected) {
	    ComboDependiente.options[ComboDependiente.length - 1].defaultSelected = true;
	    ComboDependiente.options[ComboDependiente.length - 1].selected = true;
	  }
    }
  }
}
</script>

</head>

<body onLoad="RellenarCombo(document.forms['EjemploCombos'].categoria, document.forms['EjemploCombos'].subcategoria);">
      <form id="EjemploCombos" name="EjemploCombos" method="post" target="_self" accept-charset="UTF-8">
      <table width="95%" border="0" align="center" cellpadding="0" cellspacing="0">
          <tr>
            <td width="97%" height="35"><label for="categoria">Categoria</label>
              <select name="categoria" id="categoria" style="width:180px" onChange="RellenarCombo(document.forms['EjemploCombos'].categoria, document.forms['EjemploCombos'].subcategoria);" accept-charset="UTF-8">
<option value="1">Cartuchos y Toners</option>
<option value="2">Discos Ríg y Remov</option>
<option value="3">Grab/Lect de CD y DVD</option>
<option value="4">Memorias</option>
<option value="5">Pen Drives</option>
<option value="6">Placas de Sonido</option>
<option value="7">Procesadores</option>
<option value="8">Scanners</option>
<option value="9">Software y Programas</option>
<option value="10">Alimentación</option>
<option value="11">CDs y DVDs Vírg</option>
<option value="12">Discos Rígidos</option>
<option value="13">Gabinetes y Accesorios</option>
<option value="14">Libros y Manuales</option>
<option value="15">Modems</option>
<option value="16">Motherboards</option>
<option value="17">Notebooks</option>
<option value="18">Papeles y Resmas</option>
<option value="19">Perif y Accesorios</option>
<option value="20">Placas de Video y Editora</option>
<option value="21">Impresoras</option>

              </select></td>
          </tr>
          <tr>
            <td width="97%" height="35"><label for="subcategoria">Subcategoria</label>
              <select name="subcategoria" id="subcategoria" style="width:180px" accept-charset="UTF-8">
              </select></td>
          </tr>
      </table>
      </form>
</body>
</html>
Lo que esta en rojo son las opciones de la subcategoria ya cargadas en un array para que el JavaScript llene el combo dependiente.

Lo que esta en azul es del combo padre, que es generado por ASP y su contenido no depende de otro combo, sino de la base de datos.

Lo que esta en verde es la forma de llamar a la funcion: RellenarCombo(ComboPadre, ComboDependiente, IDSelected) la ultima opcion, IDSelected, es opcional y lo que indica es un elemento del combo (mediante el ID) que quiero que aparezca seleccionado por default.

Facilmente se puede adaptar este codigo para mas de dos combos, solo tienes que analizarlo un poquito.

Cualquier duda preguntas!

Saludos!
  #5 (permalink)  
Antiguo 13/04/2008, 00:31
 
Fecha de Ingreso: febrero-2004
Ubicación: horcon
Mensajes: 133
Antigüedad: 21 años, 3 meses
Puntos: 1
Re: problema con combos dependientes

Amigo Si Te Entendi

Lo Que Pasa Que Por Requerimiento Del Usuario Se Debe Desplegar La Informacion Seleccionadas De Los Filtros Cada Vez Que Cambien Los Combos .. Por Cada Vez Que Selecciona Por Ejemplo Una Marca De Auto La Pagina Debe Mostrar El Listado De Autos En Una Tabla Html Mas Abajo De Donde Esta La Seleeccion De Combos Box .. Osea No Hay Boton Buscar Me Explico .. Cada Vez Que Marca Un Combo Debo Buscar En La Base De Datos Lo Que El Seleccione Para Desplegarlo Mas Abajo En Una Tabla En Html ..
Saludos Y Gracias Por Tu Respuesta
__________________
pato
  #6 (permalink)  
Antiguo 13/04/2008, 00:56
Avatar de i_e_s27  
Fecha de Ingreso: marzo-2008
Ubicación: En mi casa
Mensajes: 208
Antigüedad: 17 años, 1 mes
Puntos: 5
Re: problema con combos dependientes

Aamm creo que entendi cual es tu problema... aver si es asi:

Tu tienes un combo, con digamos...

Autos, Camiones, Motos

Seleccionas auto y te muestra otro combo con las marcas de autos:

Ford, Peugeot, Fiat, Chevrolet

Y a la vez una tabla HTML con todos los autos, sin distincion alguna.

Seleccionas una marca y te muestra, por ej, otro combo con colores:

Azul, Rojo, Blanco

Y a la vez una tabla HTML los autos de la marca seleccionada

Seleccionas el color y mas abajo te muestra una tabla HTML con los Autos, Ford, Rojos


Es asi la cuestion???

Entonces solo debes ir pasando en el QueryString las opciones que valla seleccionando! Asi:

rodados.asp?vehiculo=auto&marca=ford&color=rojo

entonces al hacer la construccion SQL haces algo asi:

Código:
strSQL = "SELECT from tblVehiculos WHERE "

If Request.QueryString("vehiculo") <> "" Then
	strSQL = strSQL & "(tipo_de_vehiculo = " & Request.QueryString("vehiculo") & ")"
End If

If Request.QueryString("marca") <> "" Then
	strSQL = strSQL & " AND (marca = " & Request.QueryString("marca") & ")"
End If

If Request.QueryString("color") <> "" Then
	strSQL = strSQL & " AND (color = " & Request.QueryString("color") & ")"
End If

strSQL = strSQL & " ORDER BY tipo_de_vehiculo"
Es eso lo que necesitabas?
  #7 (permalink)  
Antiguo 14/04/2008, 13:46
 
Fecha de Ingreso: febrero-2004
Ubicación: horcon
Mensajes: 133
Antigüedad: 21 años, 3 meses
Puntos: 1
Re: problema con combos dependientes

mira lo que pasa no es el problema de armar la consulta sql .. si no cuando hago submit.
por ejemplo tengo en el1er combo autos y camiones, tenia seleccionado autos y el segundo combo me cambio a fiat chevrolet , etc. luego voy nuevamente al 1er combo seleecione ahora camiones , la pagina vuelve a hacer submit me cambia el segundo combo con los modelos de camiones y esta bien que haga eso , pero despues cuando muestro el resultado en una tabla hmlt que esta mas abajo, la variable que me mando con el modelo no fue la de camiones sino el ultimo que teni seleccionado antes de hacer sl submit en este caso fue el modelo de autos me entiendes , la solcucion que le di a estos fue que haga dos submit y ahi si me manda la variable que cambio de modelos de autos a modelos de camiones no se si me explico bien ... saludos a todos
__________________
pato
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:23.