Comunidad de diseño web y desarrollo en internet online

Flex Array y dataProvider

Citar            
MensajeEscrito el 22 Ago 2011 10:18 pm
Saludos comunidad, estoy realizando mis primeros pasos usando flash builder 4.0, pero no logro colocar un nuevo item en un array que me sirve de dataProvider de una Grilla. este es el codigo me lo encontre en la ayuda de flex, le realice pequeñas modificaciones

Código Flex :

<?xml version="1.0"?>
<!-- dpcontrols/DataGridPassData.mxml -->
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
            xmlns:s="library://ns.adobe.com/flex/spark" 
            xmlns:mx="library://ns.adobe.com/flex/mx">
   
   <fx:Script>
      <![CDATA[
         import mx.collections.*;
         private var DGArray:Array = [
            {Artist:'Pavement', Album:'Slanted and Enchanted', Price:11.99},
            {Artist:'Pavement', Album:'Brighten the Corners', Price:11.99}];

         protected function B1_clickHandler(event:MouseEvent):void
         {
            // TODO Auto-generated method stub
            //DGArray.addItem([Artist:'Pavement', Album:'Slanted and Enchanted', Price:11.99]);
            DGArray[3] = ['Pavement','Brighten the Corners', 11.99];
            myGrid.dataProvider=DGArray;
         }

      ]]>
   </fx:Script>
   
   <mx:DataGrid id="myGrid" width="350" height="200">
      <mx:columns>
         <mx:DataGridColumn dataField="Album" />
         <mx:DataGridColumn dataField="Price" />
      </mx:columns> 
   </mx:DataGrid>
   <s:Button x="491" y="63" label="Button" id="B1" click="B1_clickHandler(event)"/>
</s:Application>


Tengo un boton que realizar todo el trabajo incorporar al array un nuevo elemento, y visualiza ese array en la grilla, pero no se como incorporar el nuevo elemento.

Por novaaavon

46 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 23 Ago 2011 02:33 pm
Dado que es un Array, tienes que usar un método de Array, es decir DGArray.push (lo tienes comentado como addItem, pero no es un ArrayCollection)

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 24 Ago 2011 06:31 am
Saludos Jorge, no se si abuso de tu bondad pidiendote un ejemplo, lo que pasa es que estoy revisando el tema pero no doy con una solucion coherente. Mira que lo siguiente lo copie de la ayuda de flex 4, que me llevo a un livedocs de flex 3, lo copie en mi codigo y me tira errores, existe material de ayuda pero la mayoria muy poco confiable estube probando con este codigo pero no tengo buenos resultados me tira error en la asignacion, alguna sugerencia

Código Flex :

public var masterTaskList:Array = new Array();
         masterTaskList[0] = ["wash dishes", "take out trash"];
         masterTaskList[1] = ["wash dishes", "pay bills"];
         masterTaskList[2] = ["wash dishes", "dentist", "wash dog"];
         masterTaskList[3] = ["wash dishes"];
         masterTaskList[4] = ["wash dishes", "clean house"];
         masterTaskList[5] = ["wash dishes", "wash car", "pay rent"];
         masterTaskList[6] = ["mow lawn", "fix chair"];


busque lo del push, pero me dice que solo funciona en AS3 y tampoco me aparece como opcion de codigo en Flex

Por novaaavon

46 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 24 Ago 2011 01:57 pm
Si lo que quieres es asignar un DataProvider, usa ArrayCollection, algo así

Código ActionScript :

public var masterTaskList:Array = new ArrayCollection([{category:"wash dishes", desc:"take out trash"}, {category:"wash dishes", desc:"pay bills"}, { ... etc ....}]); 


Básicamente es un array de objetos. Si luego quieres agrear un elemento ya puedes usar addItem y todos los métodos de ArrayCollection

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 24 Ago 2011 08:09 pm
Gracias por las luces, una cosita mas en este array collection, necesito poder agregar y eliminar elementos no encuentro un ejemplo que me ayude con lo que necesito, si me ayudan con alguno.

Y otra Cosa como se puede eliminar un dataProvider de un ComboBox, es decir que pueda eliminar los datos del combo mas no del dataProvider. Alguna sugerencia.... :?

Por novaaavon

46 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 24 Ago 2011 08:24 pm
Para agregar a un arrayCollection, addItem o addItemAt, para quitar removeItem o removeItemAt, ambos metodos los encuentras en ArrayCollection en la ayuda.
Para quitar elk dataprovider de un combobox lo pones a null

miCombo.dataProvider = null

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 25 Ago 2011 04:01 pm
Rayos...!!!, sigo teniendo problemas en el codigo :twisted:

Código Flex :

<?xml version="1.0"?>
<!-- dpcontrols/DataGridPassData.mxml -->
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
            xmlns:s="library://ns.adobe.com/flex/spark" 
            xmlns:mx="library://ns.adobe.com/flex/mx">
   
   <fx:Script>
      <![CDATA[
         import mx.collections.*;
         private var DGArray:ArrayCollection = new ArrayCollection([
            {Artist:'Pavement', Album:'Slanted and Enchanted', Price:11.99},
            {Artist:'Pavement', Album:'Brighten the Corners', Price:11.99}]);

         protected function B1_clickHandler(event:MouseEvent):void
         {
            // TODO Auto-generated method stub
            DGArray.addItem([{Artist:'Pavement', Album:'Brighten the Corners', Price:11.99}]);
            myGrid.dataProvider=DGArray;
         }

      ]]>
   </fx:Script>
   
   <mx:DataGrid id="myGrid" width="350" height="200" editable="false" enabled="true">
      <mx:columns>
         <mx:DataGridColumn dataField="Album" />
         <mx:DataGridColumn dataField="Price" />
         <mx:DataGridColumn/>
      </mx:columns> 
   </mx:DataGrid>
   <s:Button x="491" y="63" label="Button" id="B1" click="B1_clickHandler(event)"/>
</s:Application>


Estoy como al principio, puedo visualizar el array pero no consigo adicionar el nuevo elemento al array collection, solo se visualizan los dos primeros. Por favor si alguien me da una luz, que es lo que estoy haciendo mal me rindo...... :cry:

Por novaaavon

46 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 25 Ago 2011 04:02 pm
Estas agregando un array en vez de un item

DGArray.addItem({Artist:'Pavement', Album:'Brighten the Corners', Price:11.99});

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 25 Ago 2011 04:05 pm
yaaaa SOLUCIONADO....... les dejo el codigo para el que lo pueda necesitar

Código Flex :

<?xml version="1.0"?>
<!-- dpcontrols/DataGridPassData.mxml -->
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
            xmlns:s="library://ns.adobe.com/flex/spark" 
            xmlns:mx="library://ns.adobe.com/flex/mx">
   
   <fx:Script>
      <![CDATA[
         import mx.collections.*;
         private var DGArray:ArrayCollection = new ArrayCollection([
            {Artist:'Pavement', Album:'Slanted and Enchanted', Price:11.99},
            {Artist:'Pavement', Album:'Brighten the Corners', Price:11.99}]);

         protected function B1_clickHandler(event:MouseEvent):void
         {
            // TODO Auto-generated method stub
            DGArray.addItem({Artist:'Pavement', Album:'Brighten the Corners', Price:11.99});
            myGrid.dataProvider=DGArray;
         }

      ]]>
   </fx:Script>
   
   <mx:DataGrid id="myGrid" width="350" height="200" editable="false" enabled="true">
      <mx:columns>
         <mx:DataGridColumn dataField="Album" />
         <mx:DataGridColumn dataField="Price" />
         <mx:DataGridColumn/>
      </mx:columns> 
   </mx:DataGrid>
   <s:Button x="491" y="63" label="Button" id="B1" click="B1_clickHandler(event)"/>
</s:Application>


Solo fueron los benditos corchetes lo que estubo mal..., a y si quieren declarar su ArrayCollection vacio pues seria

Código Flex :

private var DGArray:ArrayCollection = new ArrayCollection();


voy a probar lo del dataProvider en null, ya les cuento como me va........

Por novaaavon

46 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 26 Ago 2011 01:24 am
Saludos, otra vez yo :oops: ..... Ahora necesito como era de esperarse manipular mi ArrayCollection, pues Acceder a un determinado elemento, modificarlo, eliminarlo y cosas por el estilo, solo encuentro ejemplos de Arrays simples, nada parecido a lo que tengo. :? Por favor agradeceria muchismo algun ejemplo..... de antemano GRACIAS

Por novaaavon

46 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 26 Ago 2011 02:09 am
uy que pedazo... :oops: :oops: , en el 2009 alguien ya pregunto lo que yo. Por cierto Jorge eres un maestrazo, lo encontre en otro post.

Para acceder a un determinado elemento ElArrayCollection.getItemAt(indice).elemento)

Código Flex :

DGArray.getItemAt(1).Album


Para modificarlo

Código Flex :

DGArray.getItemAt(1).Album='Diego';


^^ Nice..... solo me falta el eliminar, cuando lo tenga todo les pongo el codigo. Maestrazo JORGE a ver si me ayudas. GRACIAS

Por novaaavon

46 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 26 Ago 2011 03:03 am
:) Listo todo en orden, aqui el codigo

Código Flex :

<?xml version="1.0"?>
<!-- dpcontrols/DataGridPassData.mxml -->
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
            xmlns:s="library://ns.adobe.com/flex/spark" 
            xmlns:mx="library://ns.adobe.com/flex/mx">
   
   <fx:Script>
      <![CDATA[
         import mx.collections.*;
         public var DGArray:ArrayCollection = new ArrayCollection([
            {Artist:'Pavement', Album:'Slanted and Enchanted', Price:11.99},
            {Artist:'Pavement', Album:'Brighten the Corners', Price:11.99}]);

         protected function B1_clickHandler(event:MouseEvent):void
         {
            // TODO Auto-generated method stub
            myGrid.dataProvider=DGArray;
         }

         protected function B2_clickHandler(event:MouseEvent):void
         {
            // TODO Auto-generated method stub
            DGArray.addItem({Artist:'Pavement', Album:'Brighten the Corners', Price:11.99});
            myGrid.dataProvider=DGArray;
         }


         protected function B3_clickHandler(event:MouseEvent):void
         {
            // TODO Auto-generated method stub
            TT.text=String(DGArray.getItemAt(1).Album);
            myGrid.dataProvider=DGArray;
         }


         protected function B4_clickHandler(event:MouseEvent):void
         {
            // TODO Auto-generated method stub
            DGArray.getItemAt(1).Album='Diego';
            myGrid.dataProvider=DGArray;
         }


         protected function B5_clickHandler(event:MouseEvent):void
         {
            // TODO Auto-generated method stub
            DGArray.removeItemAt(0);
            TT.text=String(DGArray.length);
         }

      ]]>
   </fx:Script>
   
   <mx:DataGrid id="myGrid" width="350" height="200" editable="false" enabled="true">
      <mx:columns>
         <mx:DataGridColumn dataField="Album" />
         <mx:DataGridColumn dataField="Price" />
         <mx:DataGridColumn/>
      </mx:columns> 
   </mx:DataGrid>
   <s:Button x="491" y="27" label="Datos" id="B1" click="B1_clickHandler(event)"/>
   <s:Button x="491" y="60" label="Ingresar" id="B2" click="B2_clickHandler(event)"/>
   <s:TextInput x="610" y="84" id="TT"/>
   <s:Button x="491" y="118" label="Modificar" id="B4" click="B4_clickHandler(event)"/>
   <s:Button x="491" y="147" label="Eliminar" id="B5" click="B5_clickHandler(event)"/>
   <s:Button x="491" y="89" label="Mostrar" id="B3" click="B3_clickHandler(event)"/>
</s:Application>


Gracias comunidad..... y maestrazo JORGE a ver si avalas lo que aqui con tu ayuda se ha logrado, pues hombre se aceptan sugerencias y observaciones...... SALUDOS :cool:

Por novaaavon

46 de clabLevel



Genero:Masculino  

chrome

 

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