Comunidad de diseño web y desarrollo en internet online

Enviar datos de ComboBox a un DataGrid

Citar            
MensajeEscrito el 29 Abr 2010 06:12 pm
Buenas tardes, paso a comentarles un poco de que trata la ayuda que estoy pidiendo.

Han visto que existen muchas páginas dedicadas a la informática y poseen el famoso ARMA TU PC. Yo estoy luchando con uno de estos.

Poseo unos 16 ComboBox en escena y cada uno levanta los datos de sus correspondientes XML.
El XML posee dos labels "detalle" y "precio", los cuales son mostrados en el ComboBox de forma unificada.

Codigo XML ComboBox motherboard

Código XML :

<fechas>
<dia modelos='Mother MSI' precio='U$S 523' />
<dia modelos='Mother MSI' precio='U$S 523' />
<dia modelos='Mother MSI' precio='U$S 523' />
<dia modelos='Mother MSI' precio='U$S 523' />
<dia modelos='Mother MSI' precio='U$S 523' />
<dia modelos='Mother MSI' precio='U$S 523' />
<dia modelos='Mother MSI' precio='U$S 523' />
</fechas>


Imagen del ComboBox (muestra el modelo y precio de forma unificada)
[img]http://www.technologicalbridge.com.ar/combobox.bmp[/img]

Lo que necesito es que cada opción seleccionada en cada uno de esos 16 ComboBox se muestre en un DataGrid.
Que el DataGrid muestre la información por columnas, "detalles" la primer columna, "precio" la segunda columna.

Y se agregue de manera automatica una Fila al final de todas las opciones del DataGrid llamada "Total" que me sume toda la columna "precio"

Lo que hay que tener en cuenta es que si la persona cambia una opción en el ComboBox ese cambio se refleje en el DataGrid de forma espontánea.

Aca les dejo el AS del Combobox, el cual es igual a todos los que están dando vuelta con algunos detalles.

Código ActionScript :

////////////////////////////////////////////COMBOBOX//////////////////////////////////////////

//Realizo la carga del XML
motherboard = new XML();
//Esto me elimina todo espacio en blanco que haya en mi XML
motherboard.ignoreWhite = true;
//Con esto pregunto si el XML se cargo sactifactoriamente
motherboard.onLoad = function (success){
   
   //Condicional
   if (success){
            
      //Si todo sale OK
      
      //se crearan los arrays donde iran los datos.
      largo = motherboard.firstChild.childNodes.length;
      modelos = new Array(largo);
      precio = new Array(largo);
      
      //Luego de crear los array, pasamos a llenarlos
      for (i=0; i<largo; i++){
         modelos[i] = motherboard.firstChild.childNodes[i].attributes.modelos;
         precio[i] = motherboard.firstChild.childNodes[i].attributes.precio;
      }
      
      //Por ultimo, luego de crear los arrays y llenarlos, llamo a la Funcion llenarCombo
      llenarCombo();
      }
      
      //Si no se pudo cargar el XML
      
   else{
      // Me muestre el siguiente error
      trace("No se pudo cargar el XML");
   }
}
motherboard.load("armatupc/motherboard.xml");



////////////////////////////////////////////FUNCIONES//////////////////////////////////////////

function llenarCombo(){
      
   //Le asigno un proveedor de datos
   losDatos = new Array();
   //uno de mis comboBox posee el nombre Mother
   mother.dataProvider = losDatos;
   
   
   //Metemos al ComboBox los datos obtenidos del array 
   for (i=0; i<modelos.length; i++){
      
      
      //Unifico la informacion mostrando en el ComboBox el 
      //modelo (detalle) y el precio
      losDatos.addItem({ label: modelos[i] + " " + precio[i]});
      
      
      //Este es un listener que va a funcionar en el momento que se realiza
      //La seleccion de un objeto del combobox
      // Esto lo hice pero creo que no lo necesito para el DataGrid, solo me envia
      // lo seleccionado a un campo de texto dinamico (seleccion mother)
      
      mother.addEventListener("change", alSeleccionar);
      alSeleccionar = new Object();
      alSeleccionar.change = function(evento){
      _root.seleccion_mother.text=(evento.target.value);
   
      
      }
   }
}


Paso a comentar mi idea.
¿Se puede crear para el DataGrid un Array de donde este va a tomar los datos y que cada ComboBox envíe datos a ese Array?

Tengo una idea minima de cómo trabajar con AS si alguien me da una ayudita se lo agradeceria.
De antemano, GRACIAS A TODOS!!! :D

Por PX10

70 de clabLevel



 

msie
Citar            
MensajeEscrito el 30 Abr 2010 03:41 pm
Por favor necesito una mano con esto!

Por PX10

70 de clabLevel



 

msie
Citar            
MensajeEscrito el 30 Abr 2010 07:12 pm
Bueno hasta que logre enviar los datos del ComboBox al DataGrid y separar la informacion en columnas, UFFFFFF!!! Ahora tengo el siguiente problema como hago para actualizar una posicion de un Array, es decir:

ComboBox:
MSI $500
PC-CHIP $450
ASUS $400


DataGrid
Detalle__=__Precio
__MSI____=___500


Todas las opciones del ComboBox deberian estar destinadas a la pocicion 1 de Array, entonces cuando realizo un cambio en el ComboBox este se deberia plasmar en la pocicion 1 del array por lo tanto en el Data Grid.

¿quien me puede ayudar con esto?


Aca les dejo una porcion del AS al cual habria que cambiarle algunas cosas (No se cuales):

Código ActionScript :

//Crea la funcion que llenara mi ComboBox
function llenarCombo(){
      
//Le asignamos a mi ComboBox un proveedor de datos
losDatos = new Array();
mother.dataProvider = losDatos;
   
   
//Inserto los datos en el ComboBox
for (i=0; i<modelos.length; i++){
losDatos.addItem({ label: modelos[i] + " " + precio[i] });
      
//Creo el listener "change" el cual vera cuando cambia la opcion del ComboBox
mother.addEventListener("change", alSeleccionar);
alSeleccionar = new Object();

//Creo la funcion "evento" 
alSeleccionar.change = function(evento){

//La funcion "evento" creara un nuevo array llamado myDP el cual almacenara 
//la opcion elejida en el ComboBox
var myDP:Array = new Array();
for (var i=1; i<2; i++)

//Agrego los datos al Array
myDP.addItem({Detalle:(modelos[i]), Precio:(precio[i]), Quitar:i});

//Indico cual va a ser el proveedor de datos de mi DataGrid
_root.list.dataProvider = myDP;

//Esto esta solo de prueba, envia la opcion del ComboBox a un Dynamic Text Field
_root.seleccion.text=(evento.target.value);
         
       }
    }
}

Por PX10

70 de clabLevel



 

msie
Citar            
MensajeEscrito el 01 May 2010 05:37 am
Hay alguna forma mejor de hacer lo que deseo, luego de tanto pensar y pensar y leer y leer hice esto que funciona pero a gran escala... mmm no se si es muy optimo.

El XML
-> Creen un archivo nuevo y le daremos el nombre PruebaDGCB
-> Dentro de ese archivo creen otro llamado armatupc
-> Dentro de este nuevo archivo armatupc crearemos un XML llamado motherboard (Copy paste al código de abajo)


( Este código lo tome prestado del post de uno de nuestros colegas de cristalab GRACIAS!)

Código XML :

<fechas>
   <dia modelos='Conceptualización' precio='U$S 523' />
   <dia modelos='Bases de datos' precio='02/07/04' />
   <dia modelos='Imagen' precio='05/07/04' />
   <dia modelos='Bocetos' precio='06/07/04' />
   <dia modelos='Programación HTML' precio='07/07/04' />
   <dia modelos='Programación PHP' precio='08/07/04' />
   <dia modelos='Programación Flash' precio='09/07/04' />
   <dia modelos='Acabados en JavaScript' precio='12/07/04' />
   <dia modelos='Presentación proyecto' precio='13/07/04' />
   <dia modelos='Retoques' precio='14/07/04' />
   <dia modelos='Salida a internet' precio='15/07/04' />
   <dia modelos='Conceptualización' precio='U$S 523' />
   <dia modelos='Bases de datos' precio='02/07/04' />
   <dia modelos='Imagen' precio='05/07/04' />
   <dia modelos='Bocetos' precio='06/07/04' />
   <dia modelos='Programación HTML' precio='07/07/04' />
   <dia modelos='Programación PHP' precio='08/07/04' />
   <dia modelos='Programación Flash' precio='09/07/04' />
   <dia modelos='Acabados en JavaScript' precio='12/07/04' />
   <dia modelos='Presentación proyecto' precio='13/07/04' />
   <dia modelos='Retoques' precio='14/07/04' />
   <dia modelos='Salida a internet' precio='15/07/04' />
</fechas>


EL FLASH
-> Insertaremos nuestro componente ComboBox
-> Le daremos el nombre de instancia mother
-> Lo convertimos en movie clip
-> Dentro del movie clip creamos una nueva capa (a esta la vamos a utilizar para pegar el AS)
-> Volvemos a la escena 1
-> creamos dos campos de texto dinamico
-> uno le daremos el nombre de instancia seleccion_detalle
-> Al segundo le daremos el nombre de instancia seleccion_precio
-> movemos a ambos fuera de la escena de nuestro flash
-> Insertamos el dataGrid, a este le pondremos el nombre de instancia list
-> Antes de probar, guardar el FLA en nuestro archiv creado

+ PruebaDGCB
________|________prueba.FLA
________|________ + armatupc
________________________|________ motherboard.xml

Código ActionScript :

//Cargamos el XML
motherboard = new XML();
motherboard.ignoreWhite = true;
motherboard.onLoad = function (success){
   if (success){
      //Creamos los arrays donde iran los datos
      largo = motherboard.firstChild.childNodes.length;
      modelos = new Array(largo);
      precio = new Array(largo);
      
      //Llenar los arrays
      for (i=0; i<largo; i++){
         modelos[i] = motherboard.firstChild.childNodes[i].attributes.modelos;
         precio[i] = motherboard.firstChild.childNodes[i].attributes.precio;
      }
      
      llenarCombo();
      MeteDatos(Onj)
   }
   else{
      trace("No se pudo cargar el XML");
   }
}
motherboard.load("armatupc/motherboard.xml");

function llenarCombo(){
      
   //Le asignamos un proveedor de datos
   losDatos = new Array();
   mother.dataProvider = losDatos;
   
   
   //Metemos los datos en el ComboBox
   for (i=0; i<modelos.length; i++){
      losDatos.addItem({ label: modelos[i] + " " + precio[i] });
      
      
      mother.addEventListener("change", alSeleccionar);
      alSeleccionar = new Object();
      alSeleccionar.change = function(evento){
      var myDP:Array = new Array();
      for (var i=0; i<1; i++)
      myDP.addItem({Detalle:(_root.seleccion_detalle.text), Precio:(_root.seleccion_precio.text), Quitar:i});
      _root.list.dataProvider = myDP;
      
      if        (mother.text == modelos[0] + " " + precio[0]) { 
               _root.seleccion_precio.text=(precio[0]);
               _root.seleccion_detalle.text=(modelos[0]);
      }
      else{
               if (mother.text == modelos[1] + " " + precio[1]) { 
               _root.seleccion_precio.text=(precio[1]);
               _root.seleccion_detalle.text=(modelos[1]);
      }
      else{
               if (mother.text == modelos[2] + " " + precio[2]) { 
               _root.seleccion_precio.text=(precio[2]);
               _root.seleccion_detalle.text=(modelos[2]);
      }
      else{
               if (mother.text == modelos[3] + " " + precio[3]) { 
               _root.seleccion_precio.text=(precio[3]);
               _root.seleccion_detalle.text=(modelos[3]);
      }
      else{
               if (mother.text == modelos[4] + " " + precio[4]) { 
               _root.seleccion_precio.text=(precio[4]);
               _root.seleccion_detalle.text=(modelos[4]);
      }
      else{
               if (mother.text == modelos[5] + " " + precio[5]) { 
               _root.seleccion_precio.text=(precio[5]);
               _root.seleccion_detalle.text=(modelos[5]);
      }
      else{
               if (mother.text == modelos[6] + " " + precio[6]) { 
               _root.seleccion_precio.text=(precio[6]);
               _root.seleccion_detalle.text=(modelos[6]);
      }
      else{
               if (mother.text == modelos[7] + " " + precio[7]) { 
               _root.seleccion_precio.text=(precio[7]);
               _root.seleccion_detalle.text=(modelos[7]);
      }
      else{
               if (mother.text == modelos[8] + " " + precio[8]) { 
               _root.seleccion_precio.text=(precio[8]);
               _root.seleccion_detalle.text=(modelos[8]);
      }
      else{
               if (mother.text == modelos[9] + " " + precio[9]) { 
               _root.seleccion_precio.text=(precio[9]);
               _root.seleccion_detalle.text=(modelos[9]);
      }
      else{
               if (mother.text == modelos[10] + " " + precio[10]) { 
               _root.seleccion_precio.text=(precio[10]);
               _root.seleccion_detalle.text=(modelos[10]);
      
      }
      if        (mother.text == modelos[11] + " " + precio[11]) { 
               _root.seleccion_precio.text=(precio[11]);
               _root.seleccion_detalle.text=(modelos[11]);
      }
      else{
               if (mother.text == modelos[12] + " " + precio[12]) { 
               _root.seleccion_precio.text=(precio[12]);
               _root.seleccion_detalle.text=(modelos[12]);
      }
      else{
               if (mother.text == modelos[13] + " " + precio[13]) { 
               _root.seleccion_precio.text=(precio[13]);
               _root.seleccion_detalle.text=(modelos[13]);
      }
      else{
               if (mother.text == modelos[14] + " " + precio[14]) { 
               _root.seleccion_precio.text=(precio[14]);
               _root.seleccion_detalle.text=(modelos[14]);
      }
      else{
               if (mother.text == modelos[15] + " " + precio[15]) { 
               _root.seleccion_precio.text=(precio[15]);
               _root.seleccion_detalle.text=(modelos[15]);
      }
      else{
               if (mother.text == modelos[16] + " " + precio[16]) { 
               _root.seleccion_precio.text=(precio[16]);
               _root.seleccion_detalle.text=(modelos[16]);
      }
      else{
               if (mother.text == modelos[17] + " " + precio[17]) { 
               _root.seleccion_precio.text=(precio[18]);
               _root.seleccion_detalle.text=(modelos[18]);
      }
      else{
               if (mother.text == modelos[19] + " " + precio[19]) { 
               _root.seleccion_precio.text=(precio[19]);
               _root.seleccion_detalle.text=(modelos[19]);
      }
      else{
               if (mother.text == modelos[20] + " " + precio[20]) { 
               _root.seleccion_precio.text=(precio[20]);
               _root.seleccion_detalle.text=(modelos[20]);
      }
      }
      }
      }
      }
      }
      }
      }
      }
      }
      }
      }
      }
      }
      }
      }
      }
      }
      }
      }
   }
}




Necesito saber si alguien sabe como hacer esto de manera mas sencilla.... por que la verdad que es algo tedioso hacerlo asi

Por PX10

70 de clabLevel



 

chrome
Citar            
MensajeEscrito el 01 May 2010 09:00 pm
Alguien apiadado que pueda ayudarme????

Por PX10

70 de clabLevel



 

chrome
Citar            
MensajeEscrito el 01 May 2010 10:01 pm
Por favor necesito ayudaaa!!! ya hice de todo... Necesito saber si existe una manera mas simplificada de lo que quiero hacer y uno de los errores que tengo y que ya no se como resolverlo es:

Cuando hago selección de una opción en el 1° ComboBox, al seleccionar una opción del ComboBox 2°, esta modifica mi primera la entrada del 1° ComboBox en el DataGrid...

Para entender mejor lo que les digo abajo dejo un LINK para facilitarles un poco la ayuda que puedan brindarme... en este ZIP esta el FLA original

DESCARGA DEL FLA ---->>> www.technologicalbridge.com.ar/ComboBox.zip

Muchas gracias de antemano! :wink:

Por PX10

70 de clabLevel



 

chrome
Citar            
MensajeEscrito el 01 May 2010 11:49 pm
A ver, a ver.
Supongo que tienes cierta prisa y deseperación, pero si posteas todo tu código la gente no se sentirá motivada a leerlo. Procura en lo adelante tratar de exponer sólo aquello donde tienes el problema. Mientras más resumido y concreto mejor.
Ahora, lo que veo es que estás tratando de sacar toda esta info basada en un XML, creo que sería mejor que manejaras esto por medio de una base de datos y que luego vayas construyendo el xml por medio de algún lenguaje de servidor, tipo PHP, ASP, JSP, etc.
De esa manera puedes hacer todos los filtros que necesitas antes de que llegue la data a Flash.
Otra cosa, me parece que ese montón de if son innecesarios. Al final estás pidiendo que añada todos los elementos (honestamente no termino de entender ese código.

Por The Fricky!

Presidente

6168 de clabLevel

3 tutoriales
8 articulos

Genero:Masculino   Bastard Operators From Hell Héroes

Piccola Venezia...

chrome
Citar            
MensajeEscrito el 02 May 2010 02:55 am
En primer lugar gracias por responder... Mi intento de dejar solo la parte del código que no entiendo no me funciono tampoco y entiendo que sea demasiado tedioso el leer todo el código que escribí, es por este motivo que deje un link para que vean lo que hace mi FLA.
Hago la conexión directamente a un XML debido a que es solo una prueba, ya tengo mi base de datos diseñada en SQL, lo único que necesito es diseñar un modelo y a partir de ahí modificar las cosas que necesito.

No quiero tantos IF en mi código me parece poco profesional y estético... pero es lo que me resulto luego de tantas pruebas.

Como puse en posteos anteriores a este ultimo, lo que quiero hacer es esto.

1 - Tengo un XML el cual posee "modelos" y "precios" de por ejemplo, algunas mothers.

2 - Este XML es levantado por el ComboBox y une estos dos, es decir, el label del ComboBox muestra
({ label: modelos[i] + " " + precio[i] });

3 -Lo anterior como introducción, ahora lo que necesito que haga mi flash es lo siguiente.
En el momento que selecciono una opción en el ComboBox, esta opción debe ser mostrada en el DataGrid pero en columnas separadas, es decir, "modelos" en una columna y "precios" en otra (Esto con el AS que publique lo logre, pero en el momento que agrego un segundo ComboBox y hago una selección en este, en el DataGrid se me modifica la misma posición, es decir no se listan las opciones de cada ComboBox, sino que se modifican una con otra)

Necesito que me den una mano, ya vengo un mes con esto... leo... busco... leo... busco... pruebo y naaada resulta. Si me dan el AS que necesito bárbaro... pero en realidad lo que pido es que me digan, che por que no miras esta función o tene en cuenta esto... no pido massss!!! me estoy volviendo loco.

Gracias nuevamente por tu respuesta!

Por PX10

70 de clabLevel



 

chrome

 

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