Comunidad de diseño web y desarrollo en internet online

LLenar DataGrid con items de una funcion

Citar            
MensajeEscrito el 26 Jun 2009 07:15 am
Buenas, quiero llenar un datagrid con la información que obtengo de una función pero no me sale. Os pogo el código y luego digo lo que falla.

Código Javascript :

<mx:Script>
      <![CDATA[
         import mx.collections.ArrayCollection;
         
         [Bindable]
         public var array:ArrayCollection;
         
         public function llenar():void
         {
            array = new ArrayCollection();
                 var newItem:Object = new Object();
            for (var i:Number=0;i<=2;i++)
            {                  array.addItem({Subject:srv2.getCorreoSubject(i).lastResult,From:srv2.getCorreoFrom(i).lastResult});
            }
         }
      ]]>
   </mx:Script>

<mx:RemoteObject id="srv2" destination="message"/>
<mx:DataGrid x="56" y="209" width="483" dataProvider="{array}">
      <mx:columns>
         <mx:DataGridColumn headerText="Subject" dataField="Subject"/>
         <mx:DataGridColumn headerText="From" dataField="From"/>
      </mx:columns>
   </mx:DataGrid>


Creo que tego el error en el 'array.addItem'. Bueno, más que creo estoy seguro. Se que ahí hay algo mal (aunque puede haber algo más mal). Si en vez de lo que tengo pongo "srv2.get....." entre "" me saca en pantalla el strig, pero si lo pongo sin más no me saca nada. Esa función me devuelve un string y se que funciona bien porque si hago esto me pone el texto en un text.

Código Flex :

<mx:Button label="Subject" click="srv2.getCorreoSubject(1)" x="93" y="40"/>
   <mx:Text text="{srv2.getCorreoSubject.lastResult}" x="226" y="42"/>


Gracias!

Por zakabalt

48 de clabLevel



 

firefox
Citar            
MensajeEscrito el 26 Jun 2009 11:14 am
He cambiado una cosa y ahora me va mejor. Lo que pasa es que me carga el mismo dato en todas las lineas. Supongo que será por el .lastResult, pero no se como podría hacer para coger diferentes. No se si el error lo tengo aquí o lo traigo mal de Java.

Código ActionScript :

public function llenar():void
         {
            array = new ArrayCollection();
            for(var i:int = 0;i<=4;i++)
            {
               trace(i);
               srv2.getCorreoSubject(i), srv2.getCorreoFrom(i);
               array.addItem({Subject:srv2.getCorreoSubject.lastResult,From:srv2.getCorreoFrom.lastResult});
            }
         }

Por zakabalt

48 de clabLevel



 

firefox
Citar            
MensajeEscrito el 29 Jun 2009 11:01 am
He ido probando cosas y no se si el error me viene del remoteObject(probablemente si, porque he probado con un array estatico creado en flex y me ha funcionado bien. Os pongo la diferencia que me da entre un codigo y otro por si a alguien se le enciende la luz..

Código ActionScript :

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="llenarTabla()">
   <mx:Script>
      <![CDATA[
         import mx.collections.ArrayCollection;
         
         [Bindable]
         public var array:ArrayCollection;

         public function llenarTabla():void
         {
            array = new ArrayCollection();
            for(var i:int = 1;i<=6;i++)
            {
               var Subject:String = srv.getSubject(i);
               var From:String = srv.getFrom(i);
               trace('Subject'+i+Subject);
               trace('From'+i+From);
               array.addItem({Subject:Subject,From:From});
               trace(array);
            }
         }
      ]]>
   </mx:Script>

<mx:Button label="Get mails" click="llenarTabla()" x="93" y="40"/>
   <mx:Text id="Text" text="{srv.getSubject.lastResult}" x="286" y="80"/>
      
   <mx:DataGrid id="tabla" x="56" y="209" width="483" dataProvider="{array}">
      <mx:columns>
         <mx:DataGridColumn headerText="Subject" dataField="Subject"/>
         <mx:DataGridColumn headerText="From" dataField="From"/>
      </mx:columns>
   </mx:DataGrid>


Este es el código que tengo. Si lo pongo así me llena la tabla con [object AsyncToken]. Si en vez de eso pongo en las asugnaciones de subject y from, 'srv.getSubject(i).lastResult' me pone la tabla vacia. Eso puede tener más logica porque al principio son null, pero luego cuando coge los datos no cambia.

No se si es un error simple, o si tengo que cambiar toda la estructura para meter eventos o...

Gracias!

Por zakabalt

48 de clabLevel



 

firefox
Citar            
MensajeEscrito el 02 Ago 2012 07:43 pm

zakabalt escribió:

Solucionado!!

Código Javascript :

<mx:Script>
      <![CDATA[
         import mx.collections.ArrayCollection;
         
         [Bindable]
         public var array:ArrayCollection = new ArrayCollection(); <---- Y lo agregas aqui
         
         public function llenar():void
         {
            <---- Esta linea se elimino
                 var newItem:Object = new Object();
            for (var i:Number=0;i<=2;i++)
            {                  array.addItem({Subject:srv2.getCorreoSubject(i).lastResult,From:srv2.getCorreoFrom(i).lastResult});
            }
         }
      ]]>
   </mx:Script>

<mx:RemoteObject id="srv2" destination="message"/>
<mx:DataGrid x="56" y="209" width="483" dataProvider="{array}">
      <mx:columns>
         <mx:DataGridColumn headerText="Subject" dataField="Subject"/>
         <mx:DataGridColumn headerText="From" dataField="From"/>
      </mx:columns>
   </mx:DataGrid>

Por luisgo1411

0 de clabLevel



 

chrome

 

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