Comunidad de diseño web y desarrollo en internet online

Duda con ComboBox y su Dataprovider

Citar            
MensajeEscrito el 01 Ago 2012 05:31 pm
Buenas a todos,

Estoy creando una pequeña aplicacion con flex y actionscript 3.0, en la cual me permite crear unos paneles en los que dentro añado un comboBox. Pero me surge un problema ya que los dataProvider de los ditintos paneles se me solapan. Me explico mejor:

Tengo un arrayColection en el mxml de flex, en el cual despues añado los datos que llevara el comboBox.
private var datos:ArrayCollection = new ArrayCollection();


Despues mediante un boton, puedo crear unos paneles personalizados que llevaran un comboBox. La funcion con la que los creo es la siguiente:

public function addMipanel():void {
var panel:MiPanel= new MiPanel();
//Numero de paneles añadidos a la pantalla
var curNum:Number = numeroPaneles + 1;
numeroPaneles += 1;
//Iniciamos el proveedor de datos
relacion.proveedorCombo(datos, curNum);
pantalla.addElement(panel);
}


Y la función dentro de MiPanel que añade el proveedor (añadimos un dato al dataProvider dentro de esta función):

public function proveedorCombo(proveedor:ArrayCollection, numero:Number):void{
var proveedorCombo:ArrayCollection = proveedor;
//Añadimos la opcion de variable
var variable:Object = new Object();
variable.label = "Variable"+numero;
variable.data = "Variable"+numero;
proveedorCombo.addItemAt(variable, 0);
//Ponermos el proveedor al comboBox
combo.dataProvider=proveedorCombo;
combo.selectedIndex=0;
}


Pues bien, mi problema es que al ir añadiendo paneles el comboBox de cada uno se actualiza y añade un nuevo dato, es decir, para el primer comboBox me aparece los datos Variable1 + resto de datos.. pero para el segundo me aparece ya Variable2 + Variable1 + resto de datos. y asi sucesibamente. Cuando lo que yo quiero es que en el comboBox del primer panel me aparezcan los datos Variable1 + resto de datos, para el segundo panel aparezca Variable2 + resto de datos.

Debo tener un problema con los dataProvider (arrayColection) que debe añadir la variable siempre al mismo. Pero es que no se como solucionarlo para que sean independientes uno de otro.

Si alguien me podría echar una mano le estaría muy agradecido. De todas formas gracias al que se lo haya leido ya que es una parrafada.
Un saludo!

Por Ivanete

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 01 Ago 2012 06:32 pm
Me he dado cuenta utilizando el debugger que aunque cree una nueva variable local (var proveedorCombo:ArrayCollection) al igualarla a los datos que le paso, la variable local toma como referencia la misma que la otra por lo que aunque añada solo a la variable local el elemento se añade también a la otra.

Es decir, que la variable "datos", la variable de la funcion "proveedor" y la variable local "proveedorCombo" se comportan como uan sola al hacer la asignación. Se puede romper de alguna forma esta asignación, existe alguna forma?

Un saludo y gracias a todos.

Por Ivanete

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 01 Ago 2012 06:51 pm
Al darme cuenta de lo anterior (que se referencia al mismo objeto) he encontrado la solucion en este foro: http://foros.cristalab.com/referencias-o-copias-t92544/
Asi que ya esta solucionado el problemilla.

Gracias a todos los que lo han leido y perdon por este post ya que a sido un monologo mio.
Un saludote!

Por Ivanete

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 01 Ago 2012 07:28 pm
En realidad lo que creas es un puntero, no una nueva variable, deberías copiar los elementos en un nuevo ArrayCollection si quieres objetos independientes

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox

 

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