Foros del Web » Creando para Internet » Flash y Actionscript »

No puedo trabajar con 2 arraycollection

Estas en el tema de No puedo trabajar con 2 arraycollection en el foro de Flash y Actionscript en Foros del Web. Hola amigos, de antemano muchas gracias y les felicito por este foro que va ser de mucha ayuda para los nuevos en Flex como yo. ...
  #1 (permalink)  
Antiguo 29/03/2010, 08:45
Avatar de Salvadri  
Fecha de Ingreso: agosto-2009
Mensajes: 45
Antigüedad: 14 años, 9 meses
Puntos: 0
No puedo trabajar con 2 arraycollection

Hola amigos, de antemano muchas gracias y les felicito por este foro que va ser de mucha ayuda para los nuevos en Flex como yo.

Soy nuevo en Flex, estoy tratando de hacer una aplicacion de mantenimiento de una base de datos, y se me presenta un error, les cuento con detalle:

Estoy trabajando Felx con PHP y MySQL, la conexion lo hago con amfphp, todo me funciona bien, pero cuando hago la extraccion de datos mediante PHP de las tablas y las envio en las variables ARRAY me funciona bien, pero no los puedo usar los dos.

Uso un Array para mostrarlo en el DataGrid y el otro para mostrarlo en Combo, pero no me funciona el del combo, sale vacio, peor hice la prueba en el browser y en el debuguer todo bien, pero no se muestran los datos en el Combo.
  #2 (permalink)  
Antiguo 29/03/2010, 11:08
 
Fecha de Ingreso: agosto-2009
Mensajes: 44
Antigüedad: 14 años, 9 meses
Puntos: 1
Respuesta: No puedo trabajar con 2 arraycollection

hola, puedes mostrar el codigo de tu metodo donde recibes el el array colection???

tienes algo asi ?


myDataGrid.DataProvider = event. result as Array Collection;

???
  #3 (permalink)  
Antiguo 29/03/2010, 11:26
Avatar de Salvadri  
Fecha de Ingreso: agosto-2009
Mensajes: 45
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: No puedo trabajar con 2 arraycollection

Este es el codigo en el Script
Cita:
<mx:Script>
<![CDATA[
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import mx.controls.Alert;
import mx.collections.ArrayCollection;
import mx.events.CloseEvent;
import flash.display.DisplayObject
import mx.events.ListEvent;
[Bindable]

private var usuarios : ArrayCollection;
private var especialidad : ArrayCollection;

private function onResult(event:ResultEvent):void
{
usuarios = ArrayCollection(event.result);
}

private function onCombo(event:ResultEvent):void
{
especialidad = ArrayCollection(event.result);
}
]]>
</mx:Script>
Y este es de los controles
Cita:
<mx:DataGrid id="dataGrid"
dataProvider="{usuarios}"
rowCount="8"
editable="false"
resizableColumns="true"
right="10" left="10" top="59" bottom="40" change="{Editar()}">
<mx:columns>
<mx:DataGridColumn headerText="Código" dataField="codalu" editable="false" width="80" />
<mx:DataGridColumn headerText="Nombre" dataField="nomalu" editable="false" width="200"/>
<mx:DataGridColumn headerText="Edad" dataField="edaalu" editable="false" width="40"/>
<mx:DataGridColumn headerText="Fecha Nacimiento" dataField="fecnac" editable="false" width="100"/>
<mx:DataGridColumn headerText="Sexo" dataField="sexalu" editable="false" width="80" visible="false" />
<mx:DataGridColumn headerText="Año ingreso" dataField="aingreso" editable="false" width="200" visible="false"/>
<mx:DataGridColumn headerText="Especialidad" dataField="codesp" editable="false" width="40" visible="false"/>
<mx:DataGridColumn headerText="Ciclo" dataField="ciclo" editable="false" width="100" visible="false"/>
</mx:columns>
</mx:DataGrid>

<mx:ComboBox id="dataCombo"
labelField="nomesp"
dataProvider="{especialidad}"
x="76"
y="10"
width="260" fontSize="9"/>
Tengo un objeto remoto para comunicarme con el PHP mediante amfphp
Cita:
<mx:RemoteObject id="ObjetoRemoto" destination="amfphp" source="isto.misquerysAlumnos" fault="Alert.show(event.fault.faultString, 'Error')" showBusyCursor="true">
<mx:method name="consulta" result="onResult(event)"/>
<mx:method name="consulta2" result="onCombo(event)"/>
</mx:RemoteObject>
Con un boton hago los Send:
Cita:
ObjetoRemoto.consulta.send();
ObjetoRemoto.consulta2.send();
Solo se que me sale un mensaje cuando estoy en tiempo de diseño, es este:
Cita:
Data binding will not be able to detect assignments to "especialidad".
Todo esta bien, en el DataGrid me salen bien los datos, pero en el Combo no me sale nada....y en tiempo de ejecucion no me sale ningun mensaje de error, solo que el combo esta vacío, ¿que crees que es el problema?, ayudame.

Última edición por Salvadri; 29/03/2010 a las 11:39 Razón: Me falto indicar el error en tiempo de diseño
  #4 (permalink)  
Antiguo 29/03/2010, 11:48
 
Fecha de Ingreso: agosto-2009
Mensajes: 44
Antigüedad: 14 años, 9 meses
Puntos: 1
Respuesta: No puedo trabajar con 2 arraycollection

en tu query ponle las propiedades que requiere el combo box, DATA Y LABEL,

select id as data, nombre_x as label

y asi ya podras hacer la asignacion directa con solo el data provider
  #5 (permalink)  
Antiguo 29/03/2010, 11:59
Avatar de Salvadri  
Fecha de Ingreso: agosto-2009
Mensajes: 45
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: No puedo trabajar con 2 arraycollection

Cita:
Iniciado por romulo111 Ver Mensaje
en tu query ponle las propiedades que requiere el combo box, DATA Y LABEL,

select id as data, nombre_x as label

y asi ya podras hacer la asignacion directa con solo el data provider
Me explicarias un poco, como seria el cambio en las propiedades del combo si me podrias aclarar eso, con los cambios como quedaria el combobox....gracias por interesarte en mi problema
  #6 (permalink)  
Antiguo 29/03/2010, 12:03
 
Fecha de Ingreso: agosto-2009
Mensajes: 44
Antigüedad: 14 años, 9 meses
Puntos: 1
Respuesta: No puedo trabajar con 2 arraycollection

nunca trabajo con el binding directo en el mxml, todas las asignaciones las hago con AS, posteame el query que usas para jalar la especialidad
  #7 (permalink)  
Antiguo 29/03/2010, 14:41
Avatar de Salvadri  
Fecha de Ingreso: agosto-2009
Mensajes: 45
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: No puedo trabajar con 2 arraycollection

Cita:
Iniciado por romulo111 Ver Mensaje
nunca trabajo con el binding directo en el mxml, todas las asignaciones las hago con AS, posteame el query que usas para jalar la especialidad
Este es el query que esta en el archivo PHP:
Cita:
function consulta (){
$sql = "SELECT * FROM alumnos ORDER BY id ";
return $this->query($sql,0);
}

function consulta2 (){
$sql = "SELECT nomesp,codesp FROM especialidad ORDER BY nomesp ";
return $this->query($sql,0);
}

function query ($sql, $accion){
$conex= mysql_connect("localhost","root","root") or die("no se puede conectar porque ".mysql_error());
mysql_select_db("isto");
$result= mysql_query($sql,$conex);
if ($accion==1){
$result= mysql_insert_id();
}
mysql_close($conex);
return $result;
}
  #8 (permalink)  
Antiguo 29/03/2010, 15:19
 
Fecha de Ingreso: agosto-2009
Mensajes: 44
Antigüedad: 14 años, 9 meses
Puntos: 1
Respuesta: No puedo trabajar con 2 arraycollection

$sql = "SELECT nomesp as label,codesp as data FROM especialidad ORDER BY nomesp ";

intenta cambiando el query asi,

recuerda que el label de tu combo box es lo que se vera y el data es el id de tu dato, por llamarlo de una manera
  #9 (permalink)  
Antiguo 29/03/2010, 15:36
Avatar de Salvadri  
Fecha de Ingreso: agosto-2009
Mensajes: 45
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: No puedo trabajar con 2 arraycollection

Cita:
Iniciado por romulo111 Ver Mensaje
$sql = "SELECT nomesp as label,codesp as data FROM especialidad ORDER BY nomesp ";

intenta cambiando el query asi,

recuerda que el label de tu combo box es lo que se vera y el data es el id de tu dato, por llamarlo de una manera
Muchas gracias por la ayuda, este quiza era una buena forma de solucionarlo, pero probe asignando los dataProvider desde el Script, asi como me dijiste que tu manejas las propiedades mendiante AS.....muchas gracias estamos en contacto, cualquier ayuda....

Bye, que tengas un buen dia
  #10 (permalink)  
Antiguo 30/03/2010, 08:18
Avatar de Salvadri  
Fecha de Ingreso: agosto-2009
Mensajes: 45
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: No puedo trabajar con 2 arraycollection

La solución fue, asignando el data provider desde el Script:
Cita:
private function onResult(event:ResultEvent):void
{
dataGrid.dataProvider = ArrayCollection(event.result);
}

private function onCombo(event:ResultEvent):void
{
dataCombo.dataProvider = ArrayCollection(event.result);
dataCombo.labelField="nomesp";
}
Con esto solucione el problema.

Etiquetas: arraycollection, flex, trabajo
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 21:10.