Miguel Vaz escreveu:
>
> Sim, entendo que o Array não faça dispatch de eventos, e pretendo que 
> a estrutura seja ArrayCollection, mas o problema é que essa (com 
> array) é a única forma de conseguir que o flex receba os dados, embora 
> erradamente, com a estrutura interior não como VO, mas como Object.
>
> Mesmo fazendo casting do array do result que tem os VOs secundários, o 
> flex simplesmente ignora os dados, mantendo o arraycollection null.
>
> Amanhã farei novos testes, mas admito que isto me está a deixar pelos 
> cabelos. Mais porque acho que estou a entender o processo, e mesmo 
> assim algo falha.
>
> MV
>
>
>
>
> 2009/4/23 Nuno Fernandes <[email protected] 
> <mailto:[email protected]>>
>
>
>     Podes sim ter VO's dentro de ArrayCollection emq ue o
>     ArrayCollection é
>     uma propriedade de outro VO, so que o exemplo que deste na classe
>
>     public var getofcilcores:Array = new Array();
>
>     o getofcilcores é um Array e não um ArrayCollection, logo não é
>     capaz de
>     efectuar o dispatch the eventos caso haja alterações.
>
>     da seguinte forma é capaz de dar menos problemas
>
>     public var getofcilcores:ArrayCollection = new ArrayCollection ();
>
>     se tudo estiver correcto não deveras ter problemas a passar a info do
>     PHP para o FLEX e vice-versa
>
>
>     Miguel Vaz escreveu:
>     >
>     > Já tenho tudo mais ou menos a funcionar, apenas com uma dúvida:
>     >
>     > E se pretender ter um VO dentro de outro VO? Não da forma como no
>     > exemplo do João Fernandes, em que um segundo VO existe dentro do
>     > primeiro, mas apenas uma vez, e sim ter, por exemplo, um VO com uma
>     > propriedade que será um arraycollection de outro tipo de VO.
>     >
>     > Algo assim:
>     >
>     >
>     > package vo
>     > {
>     >     import com.adobe.cairngorm.vo.IValueObject;
>     >
>     >     import mx.controls.Text;
>     >
>     >     [RemoteClass(alias="vo.getOFcilindrosVO")]
>     >
>     >     [Bindable]
>     >     public class getOFcilindrosVO implements IValueObject {
>     >
>     >         public var num_of:Number;
>     >
>     >         public var obs1:Text;
>     >         public var obs2:Text;
>     >         public var obs3:Text;
>     >
>     >         public var posicao:Number;
>     >
>     >         public var getofcilcores:Array = new Array(); // aqui
>     fica um
>     > arraycollection de VOs
>     >
>     >
>     >     }
>     > }
>     >
>     > O getofcilcores é um array que terá um outro VO em cada indice. O
>     > problema é que o interior é recriado como Object. Do PHP os dados
>     > regressam correctamente, um VO com propriedades e um Array com
>     indices
>     > como VOs. A transferência é que falha.
>     >
>     > A questão é se deverei ter uma função dentro do VO para transferir
>     > valor a valor e construir devidamente o getofcilcores como
>     > arraycollection de VOs.
>     >
>     > Confuso? :-)
>     >
>     > Algo como ter um pessoasVO que tem uma propriedade que é uma
>     lista de
>     > hoteisVO, por exemplo.
>     >
>     > De qualquer forma, muito obrigado pelas dicas, foram extremamente
>     > esclarecedores, acho que já entendi como posso lidar
>     convenientemente
>     > com VOs. Apesar de darem algum trabalho, os dados ficam melhor
>     > estruturados e com extras acrescidos.
>     >
>     > MV
>     >
>     >
>     >
>     >
>     >
>     >
>     > 2009/4/23 Nuno Fernandes <[email protected]
>     <mailto:[email protected]>
>     > <mailto:[email protected] <mailto:[email protected]>>>
>     >
>     >
>     >     Pois Miguel o teu problema é estares a usar o
>     >     modelo.OFgeral[posicao].propriedade="dados".
>     >
>     >     O que se passa é que esse tipo de alterações não fazem que o
>     >     ArrayCollection faça o dispatch do evento CollectionChange.
>     A melhor
>     >     forma é mesmo como eu exemplifiquei,
>     >
>     >      modelo.OFgeral.removeItemAt(posicao)
>     >      modelo.OFgeral.addItemAt(posicao,null)
>     >     o metodo addItem provoca o dispatch do evento
>     CollectionChange e tudo
>     >     começa a funcionar.
>     >
>     >     o que tu chamaas de  "limpar" ou "atribuição"do ponto de
>     vista do
>     >     ArrayCollection é a mesma coisa, alteração em um item. Eu
>     geralmente o
>     >     que faço é no VO do FLEX tenho um campo que me indica se o
>     item é para
>     >     ser usado, visível, ou qualquer outra coisa, e faço a
>     alteração a esse
>     >     nivel, assim sempre posso ter filterFunctions associadas ao
>     >     ArrayCollection e outras coisas mais :D
>     >
>     >     Abraços
>     >
>     >     Miguel Vaz escreveu:
>     >     >
>     >     > No meu modelo eu tenho:
>     >     >
>     >     > OFgeral:ArrayCollection = new ArrayCollection();
>     >     >
>     >     > Antes de fazer a chamada à base de dados, tenho uma rotina que
>     >     corre o
>     >     > OFgeral à procura de posições disponíveis (que se traduzem em
>     >     janelas
>     >     > abertas), onde irá colocar os resultados. Daí existir no
>     command
>     >     > apenas uma atribuição e não um addItem. O addItem só é
>     feito uma
>     >     vez,
>     >     > antes da chamada à BD, se a posição estiver abtera, caso
>     contrário
>     >     > apenas limpo os dados nessa posição
>     (modelo.OFgeral[posicao]=null) e
>     >     > reinsiro o VO.
>     >     >
>     >     > Os meus binds, como no exemplo do text, são sempre
>     >     > {modelo.OFgeral.getItemAt(posicao).propriedade}, para
>     atribuições,
>     >     > faço modelo.OFgeral[posicao].propriedade="dados".
>     >     >
>     >     > De qualquer forma, de momento não posso fazer nenhum
>     teste, já que
>     >     > estou em casa, mas amanhã vou analisar melhor a situação e
>     deixo
>     >     aqui
>     >     > o que encontrar. Vou rever melhor o código e ver se existe
>     alguma
>     >     > coisa que me está a escapar, já que o projecto começa a
>     ganhar uma
>     >     > dimensão considerável.
>     >     >
>     >     > Agradeço imenso o tempo e a paciência que estão todos a ter.
>     >     Aprecio o
>     >     > esforço, já que isto dos VOs é mais uma lacuna nos meus
>     >     conhecimentos.
>     >     > Lacuna de um assunto que considero bastante importante
>     para uma
>     >     > eficiente gestão/organização de transmissão de dados.
>     >     >
>     >     > Quem sabe daqui a uns meses vos dou um assunto
>     interessante para uma
>     >     > eventual apresentação num dos eventos. ;-) O projecto que
>     estou a
>     >     > desenvolver é algo um pouco à margem do habitual em
>     projectos de
>     >     flex,
>     >     > e poderá ser interessante como case study para mostrar algumas
>     >     > utilizações menos vistas com flex.
>     >     >
>     >     > MV
>     >     >
>     >     >
>     >     >
>     >     >
>     >     >
>     >     > 2009/4/22 Nuno Fernandes <[email protected]
>     <mailto:[email protected]>
>     >     <mailto:[email protected] <mailto:[email protected]>>
>     >     > <mailto:[email protected]
>     <mailto:[email protected]> <mailto:[email protected]
>     <mailto:[email protected]>>>>
>     >     >
>     >     >
>     >     >     Bom tenho que vazar, mas aqui fica a info
>     >     >
>     >     >       1. o OFgeral _*TEM*_ que ser do tipo ArrayCollection, se
>     >     for um
>     >     >          Array, não há bandings
>     >     >       2. para "mexeres" num ArrayCollection não usamos a mesma
>     >     técnica do
>     >     >          Array [index],  usamos  os metodos getItemAt(index),
>     >     >          addItemAt(index) e removeItemAt(index) por exemplo
>     >     >
>     >     >     Se o OFgeral for um ArrayCollection nas labels só tens que
>     >     colocar:
>     >     >
>     >     >     text="{modelo.OFgeral.getItemat(1).num_of}"
>     >     >
>     >     >     mas na function result isto :
>     >     >
>     >     >     modelo.OFgeral[posicao]= tempor;
>     >     >
>     >     >     deve ser substituido por
>     >     >
>     >     >     modelo.OFgeral.addItemAt(posicao, tempor);
>     >     >
>     >     >     Mas le a DOC sobre esses métodos, porque no caso do
>     >     addItemAt se nesse
>     >     >     index já existir algo, esse conteudo passa para o index a
>     >     seguir e
>     >     >     assim
>     >     >     sucessivamente, se quiseres alterar o conteudo de um
>     index no
>     >     >     ArrayCollection o que deves fazer é primeiro removes e
>     depois
>     >     >     adicionas.
>     >     >
>     >     >     Abraços
>     >     >
>     >     >
>     >     >
>     >     > >
>     >
>     >
>     >
>     >
>     >
>     > >
>
>
>
>
>
> >
Podes ir a propriedades source do arrayCollection que basicamente é um 
array normal.

logo terias:

public var getofcilcores:ArrayCollection = new ArrayCollection ();
getofcilcores.source = evt.result as array


não sei se era isto que querias...

abraço,
rui cruz



--~--~---------~--~----~------------~-------~--~----~
Recebeu esta mensagem porque está inscrito em Grupo "Mailing List da Comunidade 
Portuguesa de Rich Internet Applications - www.riapt.org" do Grupos Google.
 Para enviar mensagens para este grupo, envie um email para 
[email protected]
 Para anular a inscrição neste grupo, envie um email para 
[email protected]
 Para mais opções, visite este grupo em 
http://groups.google.com/group/riapt?hl=pt-PT
-~----------~----~----~----~------~----~------~--~---

Responder a