Comunidad de diseño web y desarrollo en internet online

Combo con combo

Citar            
MensajeEscrito el 08 Jul 2005 09:03 pm
Hola:

Alguien de ustedes ha visto, tiene o sabe como llenar un combo de acurdo a lo que yo seleccione de otro combo.

Explicacion:

Tengo un combo (combo1) que lo lleno con informacion de un XML que genero con php desde una B.D, en especifico genero una lista de clientes. (Aqui no tengo problema)

Ahora lo que quiero es que al seleccionar un cliente de combo1, me de las especialidades (otra lista) en combo2 de acuerdo a lo seleccionado en combo1.

Creo que seria al evento onchange del combo1 que tendria que cargar otro xml para llenar mi combo2.

Alguien me ayuda?. algun ejemplo...?

Gracias anticipadas.

Por manuel_cfe

106 de clabLevel



 

msie
Citar            
MensajeEscrito el 09 Jul 2005 11:43 am
Efectivamente como bien dices tendrías que utilizar el evento onChange. Supongo que dependiendo de lo que selecciones en el combo1 lo que cargas en el combo2 varía, voy a escribirlo aquí a pelo no lo he probado pero debería ser algo de este tipo.

Código :

/************* FUNCIONES ****************/

function llenarCombo2(){
   //Atacheamos nuetro componente
   attachMovie("ComboBox", "miDesplegable", 1);

   //Propiedades
   combo2.setSize(170, 22);
   combo2.dropdownWidth = 200;
   //miDesplegable.editable = true;
   combo2.text = "Tareas a realizar";
   
   //Le asignamos un proveedor de datos
   losDatos = new Array();
   combo2.dataProvider = losDatos;
   
   //Metemos los datos en el ComboBox
   for (i=0; i<tareas.length; i++){
      losDatos.addItem({ label: tareas[i], data: dias[i] });
   }
}

/************* LISTENERS ****************/

//Listeners para cuando seleccionamos alguna opcion
alSeleccionar = new Object();
alSeleccionar.change = function(objeto){
   //Cargamos el XML
   combo2_xml = new XML();
   combo2_xml.ignoreWhite = true;
   combo2_xml.onLoad = function (success){
      if (success){
         //Creamos los arrays donde iran los datos
         largo = combo2_xml.firstChild.childNodes.length;
         tareas = new Array(largo);
         dias = new Array(largo);
         
         //Llenar los arrays
         for (i=0; i<largo; i++){
            tareas[i] = combo2_xml.firstChild.childNodes[i].attributes.tarea;
            dias[i] = combo2_xml.firstChild.childNodes[i].attributes.fecha;
         }
         
         llenarCombo2();
      }
      else{
         trace("No se pudo cargar el XML");
      }
   }
   calendario.load(objeto.target.value + ".xml");
}


Debería ser algo de este tipo, miratelo y si no entiendes/funciona algo me lo dices.

Deu!! ^^

Por Elecash

Claber

8126 de clabLevel

37 tutoriales
19 articulos
13 ejemplos

  Bastard Operators From Hell Desarrollador de GAIA Premio_Secretos Héroes

BarnaCity

firefox
Citar            
MensajeEscrito el 09 Jul 2005 06:36 pm
elecash:

ok , lo pruebo , tenia una idea pero pruebo esto, gracias

Por manuel_cfe

106 de clabLevel



 

msie
Citar            
MensajeEscrito el 12 Jul 2005 03:28 pm
elecash:

Gracias, me apoye con tu codigo.... , asi quedo

1)Cargo mis 2 combos asi:

Código :

//Cargamos el Combo Clientes
miXML3.ignoreWhite = true;
miXML3.onLoad = function (success) {
   //Cargamos y llenamos el array
   losDatos = new Array();
   clientef2.setStyle("fontSize", 9);
   clientef2.dataProvider = losDatos;   //Metemos los datos en el ComboBox
   if (success){
      for (i=0; i<miXML3.firstChild.firstChild.childNodes.length; i++){
         losDatos.addItem({label:miXML3.firstChild.firstChild.childNodes[i].childNodes[0].firstChild,
                       data:miXML3.firstChild.firstChild.childNodes[i].childNodes[0].firstChild});
            //cliente.text = clientef2.getItemAt(0).label;
            cliente.text = losDatos.getItemAt(0).data;
            _global.cliente2 = cliente.text;
      }
   }
   if (miXML3.loaded) {
   //Cargamos el XML 
         combo2_xml.ignoreWhite = true; 
         combo2_xml.onLoad = function (success){ 
         if (success){ 
         //Creamos los arrays donde iran los datos 
         especialidades = new Array();
       especialidadf2.setStyle("fontSize", 9);
       especialidadf2.dataProvider = especialidades;
         //dias = new Array(largo); 
          
         //Llenar los arrays 
         for (i=0; i<combo2_xml.firstChild.firstChild.childNodes.length; i++){ 
           especialidades.addItem({label:combo2_xml.firstChild.firstChild.childNodes[i].childNodes[0].firstChild});
                           
            }  
         } 
         else{ 
            trace("No se pudo cargar el XML"); 
         } 
      } 
      combo2_xml.load("especialidad.php?cliente="+ cliente2 + "&r="+ Math.random());      
}
///
}
miXML3.load("mostraradm.php");


2) Al seleccionar otro cliente cambi mi otro combo, asi:

Código :

if (objeto.target == clientef2){
       cliente.text = clientef2.selectedItem.data;
       _global.cliente2 = cliente.text;
            //
               //Cargamos el XML 
         combo2_xml.ignoreWhite = true; 
         combo2_xml.onLoad = function (success){ 
         if (success){ 
         //Creamos los arrays donde iran los datos 
         especialidades = new Array();
       especialidadf2.dataProvider = especialidades;
         //dias = new Array(largo); 
          
         //Llenar los arrays 
         for (i=0; i<combo2_xml.firstChild.firstChild.childNodes.length; i++){ 
           especialidades.addItem({label:combo2_xml.firstChild.firstChild.childNodes[i].childNodes[0].firstChild});
                           
            }  
         } 
         else{ 
            trace("No se pudo cargar el XML"); 
         } 
      } 
      combo2_xml.load("especialidad.php?cliente="+ cliente2 + "&r="+ Math.random());
   }      
}


la llamada al listener del combo clientef2, asi:

Código :

alSeleccionar.change = function(objeto)


Bueno lo pongo, esperando que a alguien le sea de utilidad; tambien se aceptan criticas porque creo que hay mas de una forma de pelar un pollo....

Saludos

Por manuel_cfe

106 de clabLevel



 

msie

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.