Parece que dá pra usar a estratégia do item B, através de um DataDescriptor
(
http://livedocs.adobe.com/flex/3/langref/mx/controls/treeClasses/DefaultDataDescriptor.html)
customizado. Parece ser esse o "caminho das pedras".


2009/7/27 Fernando Ghisi <[email protected]>

> Vou tentar explicar meu problema.
>
> Tenho duas classes, Usuario e Papel. A classe Usuario tem dois atributos,
> “nome” e “children” (array de papeis); a classe Papel tem também um atributo
> “nome” e um “children” (array de usuários).
>
> No modelo da minha aplicação tenho dois ArrayCollection, um com a lista de
> usuários e outro com a lista de papéis.
>
>
> Em determinado ponto do sistema, tenho uma Tree, em que o dataProvider é
> hora o ArrayCollection de usuários (visualização por usuários) e hora o
> ArrayCollection de papéis (visualização por papéis). O labelField dessa Tree
> é “nome”, que é comum ao objeto Usuario e a ao Papel (não precisando ser
> alterado quando mudo o dataProvider).
>
> Estando na visão por usuários, o segundo nível da árvore mostrará seus
> papéis (que estão dentro do array “children” presente em cada objeto
> Usuario). Estando na visão por papéis, o segundo nível da árvore mostrará
> seus usuários (que estão dentro do array “children” presente em cada objeto
> Papel).
>
> Até ai tudo bem, funciona perfeitamente. O problema é que eu não consigo
> parar no segundo nível da Tree e a aplciação entra em looping infinito ao
> tentar apresentar os dados da Tree com essa estratégia. Por exemplo, na
> situação da visão por usuários, o segundo nível da árvore mostrará seus
> papéis (que estão dentro do array “children” presente em cada objeto
> Usuario), mas cada papel mostrará também seus usuários (que estão dentro do
> array “children” presente em cada objeto Papel), que por sua vez mostrarão
> seus papéis.... e assim por diante.
>
> E aí, como eu poderia fazer para evitar isso? Pensei em duas estratégias,
> mas não sei se é possível fazer e não encontrei nada pesquisando no Google:
>
> a) Existe alguma forma de fazer com que a Tree use o dataprovider somente
> até o segundo nível (por exemplo, na visão de usuários, mostraria somente os
> usuários e seus papéis, sem utilizar o children dos objetos papéis)?
>
> b) Ou existe alguma forma de usar hierarquia de um dataProvider de
> ArrayCollection sem ter que chamar o atributo do objeto pai de “children”?
> Se der (que eu saiba não dá), seria só eu chamar o array de papéis de
> “papeis” no objeto Usuario e o de usuários de “usuarios” no objeto Papel e
> passar essa informação de alguma forma pra Tree (que ao invés deutilziar o
> atributo "children" pra fazer a hierarquia, utilizaria um atributo com o
> nome informado) – daí o dataprovider não entraria em recursão por causa do
> atributo “children” que estava presente nos dois objetos.
>
>
> Deu pra entender alguam coisa, ou ficou confusa a minha explciação? Alguéms
> abe se tem como fazer uam das duas cosias, ous e tem ainda outra maneira de
> fazer isso?
>
> Obs.: Não quero utilizar XML (que já resolveria o problema).
>
>
>
> []s
>
> Fernando
>
>


-- 
Fernando Benedet Ghisi

--~--~---------~--~----~------------~-------~--~----~
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para [email protected]
Para sair da lista, envie um email em branco para 
[email protected]
Mais opções estão disponíveis em http://groups.google.com/group/flexdev
-~----------~----~----~----~------~----~------~--~---

Responder a