Fala Felipe, beleza?
Tentei o que você disse, e algumas outras coisas. Consegui fazer aparecer
algo pegando o evento click, e chamando o gc.refresh(); (mas só apareceu a
primeira categoria, mas acredito que seja um começo).

Muito provavelmente, o problema está na hora que chamo o gc.refresh, assim
como você e o Marcelo já falaram. Apesar disso, ainda não sei onde chamar.
Estou enviando em anexo, o meu Mediator e o ListaContas.mxml. Caso tenha
paciência para dar uma olhada, ficarei grato,

Atenciosamente
Danilo

2008/6/6 Felipe Fernandes <[EMAIL PROTECTED]>:

>
> Danilo posta também o listaContas.
> antes tenat o seguinte:
> listaContas.categories = categoryProxy.categories;
> listaContas.gc.source = listaContas.categories;
> listaContas.gc.refresh();
>
> Felipe
> http://bobfernandes.wordpress.com
>
>
> 2008/6/5 Danilo <[EMAIL PROTECTED]>:
> > Felipe, na verdade, estou utilizando o PureMVC, e no meu código, está
> assim:
> >
> >         public function ListaContasMediator(viewComponent:Object){
> >             super(NOME,viewComponent);
> >
> >             listaContas.addEventListener(ListaContas.CREATE, onCreate);
> >             listaContas.addEventListener(ListaContas.REMOVE, onDelete);
> >             listaContas.addEventListener(ListaContas.SELECT, onSelect);
> >
> >             categoryProxy = facade.retrieveProxy(CategoryProxy.NOME) as
> > CategoryProxy;
> >
> >             listaContas.categories = categoryProxy.categories;
> >             listaContas.gc.refresh();
> >         }
> >
> > e tem essa (que pega o listaContas):
> >         private function get listaContas():ListaContas{
> >             return viewComponent as ListaContas
> >         }
> >
> > Eu seto o categories, do listaContas, ali na linha em vermelho, e logo
> > abaixo dei o refresh. Porém, não funciona.
> > Não sei nem o que tentar de diferente mais.
> >
> > Abraço,
> > Danilo
> >
> > 2008/6/5 Felipe Fernandes <[EMAIL PROTECTED]>:
> >>
> >> Danilo,
> >>
> >> Deixa eu ver se consigo te ajudar, tem uma função no meio do seu
> >> código que trata o retorno dos dados e deve conter algo parecido com
> >> isso:
> >> categories = new ArrayCollection(event.result as Array);
> >> Agora adicione o seguinte logo abaixo:
> >> gc.refresh()
> >>
> >> Caso vc continue com dúvidas poste seu código (a parte flex) inteiro
> >> aqui, para que possamos te explicar melhor.
> >>
> >> Felipe
> >> http://bobfernandes.wordpress.com
> >>
> >> 2008/6/5 Danilo <[EMAIL PROTECTED]>:
> >> > Marcelo,
> >> >
> >> > Estou entendendo o que devo fazer.
> >> > Agora surgiu uma outra dúvida.
> >> >
> >> > No result do meu método que pega as categorias, eu adicionei o
> seguinte
> >> > código:
> >> >
> >> > var listaContas:ListaContas = new ListaContas();
> >> > listaContas.gc.refresh();
> >> >
> >> > Porém, não está funcionando, mas eu imagino que não esteja
> funcionando,
> >> > porque eu dei um new ListaContas. Correto?
> >> > Você sabe me dizer, como tem que ser o gc.refresh(), lá no meu proxy,
> >> > para
> >> > que ele funcione na tela listaContas?
> >> >
> >> > Abraço,
> >> > Danilo
> >> > 2008/6/5 Marcelo Savioli <[EMAIL PROTECTED]>:
> >> >>
> >> >> Danilo,
> >> >>
> >> >> Você pode colocar o gc.refresh() no result do metódo que carrega
> >> >> "categories".
> >> >> Pode também adicionar um listener no seu dataProvider para saber
> quando
> >> >> foi alterada a collection.
> >> >>
> >> >> Se precisar de ajuda com isso é só mandar.
> >> >>
> >> >> 2008/6/5 Danilo <[EMAIL PROTECTED]>:
> >> >>>
> >> >>> Eu fiz o debug, e entendi o que você quis dizer. Só não consigo
> fazer
> >> >>> funcionar agora. Será que tem como você me dar uma força nessa
> parte,
> >> >>> novamente?
> >> >>>
> >> >>> 2008/6/5 Danilo <[EMAIL PROTECTED]>:
> >> >>>>
> >> >>>> Marcelo,
> >> >>>> Até entendi o que você quis dizer, mas não entendi como fazer isso
> >> >>>> funcionar no código. Talvez seja por ser novato no as3, talvez seja
> >> >>>> incompetência minha mesmo. Será que teria como você explicar
> >> >>>> novamente?
> >> >>>> Desculpa o incômodo.
> >> >>>>
> >> >>>> Abraço,
> >> >>>> Danilo
> >> >>>>
> >> >>>> 2008/6/4 Marcelo Savioli <[EMAIL PROTECTED]>:
> >> >>>>>
> >> >>>>> Danilo,
> >> >>>>>
> >> >>>>> Apesar de estar no init da sua aplicação o retorno é assíncrono,
> >> >>>>> portanto ocorre aquilo que falei..
> >> >>>>> Você pode utilizar o debug para confirmar isso.
> >> >>>>>
> >> >>>>> Esta já seria a forma mais simples de agrupar dados no
> >> >>>>> AdvancedDataGrid. Este componente é muito chato mesmo de se
> >> >>>>> trabalhar, da
> >> >>>>> para perceber claramente que ele não foi desenvolvido pela mesma
> >> >>>>> equipe que
> >> >>>>> desenvolveu o sdk.
> >> >>>>>
> >> >>>>> 2008/6/4 Danilo <[EMAIL PROTECTED]>:
> >> >>>>>>
> >> >>>>>> O meu serviço PHP, é chamado no init da aplicação. Essa é a
> >> >>>>>> primeira
> >> >>>>>> coisa a ser carregada. Na verdade, no GroupingCollection, eu
> >> >>>>>> imagino que o
> >> >>>>>> categories, esteja com seus dados, mesmo porque, se eu pegar esse
> >> >>>>>> mesmo
> >> >>>>>> categories, e colocar diretamente no AdvancedDataGrid, como
> >> >>>>>> dataProvider,
> >> >>>>>> ele monta normalmente.
> >> >>>>>>
> >> >>>>>> Será que não seria algum problema com os dados retornados do php?
> >> >>>>>>
> >> >>>>>> Você conhece uma maneira mais fácil, para montar o
> >> >>>>>> AdvancedDataGrid?
> >> >>>>>>
> >> >>>>>> Abraço,
> >> >>>>>> Danilo
> >> >>>>>>
> >> >>>>>> 2008/6/4 Marcelo Savioli <[EMAIL PROTECTED]>:
> >> >>>>>>>
> >> >>>>>>> Danilo,
> >> >>>>>>>
> >> >>>>>>> Pode não ser o seu caso, mas vamos tentar.
> >> >>>>>>>
> >> >>>>>>> Quando você faz:
> >> >>>>>>>
> >> >>>>>>>      <mx:dataProvider>
> >> >>>>>>>         <mx:GroupingCollection id="gc" source="{categories}">
> >> >>>>>>>             <mx:Grouping>
> >> >>>>>>>                 <mx:GroupingField name="catA"/>
> >> >>>>>>>                 <mx:GroupingField name="catB"/>
> >> >>>>>>>                 <mx:GroupingField name="catC"/>
> >> >>>>>>>                 <mx:GroupingField name="catD"/>
> >> >>>>>>>             </mx:Grouping>
> >> >>>>>>>         </mx:GroupingCollection>
> >> >>>>>>>     </mx:dataProvider>
> >> >>>>>>>
> >> >>>>>>> Você esta dizendo que o dataProvider é uma GroupingCollection
> >> >>>>>>> baseada
> >> >>>>>>> em "categories". A principio, "categories" é vazio. Então a
> >> >>>>>>> GroupingCollection passa uma coleção vazia para o dataProvider
> do
> >> >>>>>>> grid.
> >> >>>>>>> Quando você chama seu serviço no PHP, "categories" é atualizado,
> >> >>>>>>> porém a GroupingCollection não monta automaticamente um novo
> >> >>>>>>> dataprovider
> >> >>>>>>> baseado nessa mudança.
> >> >>>>>>> Por isso, ao chamar o refresh da GroupingCollection você estará
> >> >>>>>>> fazendo com que a GroupingCollection monte novamente uma coleção
> >> >>>>>>> para servir
> >> >>>>>>> de dataProvider ao grid.
> >> >>>>>>>
> >> >>>>>>> Portanto, sempre que modificar sua coleção é necessário remontar
> o
> >> >>>>>>> dataProvider do grid utilizando o "gc.refresh()".
> >> >>>>>>>
> >> >>>>>>> 2008/6/4 Danilo <[EMAIL PROTECTED]>:
> >> >>>>>>>>
> >> >>>>>>>> Marcelo,
> >> >>>>>>>> Mas, eu acho que os dados já retornaram do php, visto que se eu
> >> >>>>>>>> uso
> >> >>>>>>>> um dataprovider antes de dar um GroupingCollection, os dados
> >> >>>>>>>> montam a grid
> >> >>>>>>>> normalmente. Caso eu esteja equivocado, não entendi o que você
> >> >>>>>>>> quis dizer,
> >> >>>>>>>> ou como fazer o que você disse.
> >> >>>>>>>>
> >> >>>>>>>> Att,
> >> >>>>>>>> Danilo
> >> >>>>>>>>
> >> >>>>>>>> 2008/6/3 Marcelo Savioli <[EMAIL PROTECTED]>:
> >> >>>>>>>>>
> >> >>>>>>>>> Danilo,
> >> >>>>>>>>>
> >> >>>>>>>>> Faz o "gc.refresh()" após os dados retornarem do php.
> >> >>>>>>>>>
> >> >>>>>>>>> 2008/6/3 Danilo <[EMAIL PROTECTED]>:
> >> >>>>>>>>>>
> >> >>>>>>>>>> Olá pessoal,
> >> >>>>>>>>>> Estou com um problema, para mostrar os dados que vêm do
> amfphp
> >> >>>>>>>>>> no
> >> >>>>>>>>>> AdvancedDatagrid, agrupados.
> >> >>>>>>>>>> Atualmente, estou retornando os objetos do amfphp em uma
> array,
> >> >>>>>>>>>> da
> >> >>>>>>>>>> seguinte maneira:
> >> >>>>>>>>>>
> >> >>>>>>>>>> $arrTree[$i]["catA"] = $r->catA;
> >> >>>>>>>>>> $arrTree[$i]["catB"] = $r->catB;
> >> >>>>>>>>>> $arrTree[$i]["catC"] = $r->catC;
> >> >>>>>>>>>> $arrTree[$i]["catD"] = $r->catD;
> >> >>>>>>>>>> $i++;
> >> >>>>>>>>>>
> >> >>>>>>>>>>
> >> >>>>>>>>>> E no final, retorno a array $arrTree.
> >> >>>>>>>>>>
> >> >>>>>>>>>> Acontece, que se eu quiser listar em um Datagrid, funciona
> >> >>>>>>>>>> perfeitamente!
> >> >>>>>>>>>> Porém, gostaria de listar Hierarquicamente em um
> >> >>>>>>>>>> AdvancedDatagrid,
> >> >>>>>>>>>> juntamente com outros valores, mas não estou conseguindo
> montar
> >> >>>>>>>>>> o
> >> >>>>>>>>>> agrupamento dos itens. Tentei da seguinte maneira:
> >> >>>>>>>>>>
> >> >>>>>>>>>>       <mx:dataProvider>
> >> >>>>>>>>>>         <mx:GroupingCollection id="gc" source="{categories}">
> >> >>>>>>>>>>             <mx:Grouping>
> >> >>>>>>>>>>                 <mx:GroupingField name="catA"/>
> >> >>>>>>>>>>                 <mx:GroupingField name="catB"/>
> >> >>>>>>>>>>                 <mx:GroupingField name="catC"/>
> >> >>>>>>>>>>                 <mx:GroupingField name="catD"/>
> >> >>>>>>>>>>             </mx:Grouping>
> >> >>>>>>>>>>         </mx:GroupingCollection>
> >> >>>>>>>>>>     </mx:dataProvider>
> >> >>>>>>>>>>
> >> >>>>>>>>>> Seguindo alguns exemplos que encontrei na própria
> documentação
> >> >>>>>>>>>> da
> >> >>>>>>>>>> adobe.
> >> >>>>>>>>>> No evento creationComplete, eu tento chamar esse agrupamento
> >> >>>>>>>>>> assim: creationComplete="{gc.refresh();}"
> >> >>>>>>>>>> Mas não está funcionando.
> >> >>>>>>>>>>
> >> >>>>>>>>>> Alguém sabe me dizer, onde pode estar ocorrendo o erro? Eu
> sei
> >> >>>>>>>>>> que
> >> >>>>>>>>>> os dados de categories, estão chegando, tanto que se eu
> >> >>>>>>>>>> utilizar um
> >> >>>>>>>>>> dataProvider="{categories}" no AdvancedDataGrid, ele funciona
> >> >>>>>>>>>> normalmente,
> >> >>>>>>>>>> porém, parece que não estou conseguindo tratar estes dados.
> >> >>>>>>>>>>
> >> >>>>>>>>>> Será que alguém consegue me ajudar?
> >> >>>>>>>>>>
> >> >>>>>>>>>> Abraço,
> >> >>>>>>>>>> Danilo
> >> >>>>>>>>>>
> >> >>>>>>>>>>
> >> >>>>>>>>>
> >> >>>>>>>>>
> >> >>>>>>>>>
> >> >>>>>>>>> --
> >> >>>>>>>>> Marcelo Curi Savioli
> >> >>>>>>>>> D-Click Web & Mobile Solutions
> >> >>>>>>>>> [EMAIL PROTECTED]
> >> >>>>>>>>> www.dclick.com.br/blog
> >> >>>>>>>>> www.dclick.com.br
> >> >>>>>>>>>
> >> >>>>>>>>
> >> >>>>>>>>
> >> >>>>>>>>
> >> >>>>>>>
> >> >>>>>>>
> >> >>>>>>>
> >> >>>>>>> --
> >> >>>>>>> Marcelo Curi Savioli
> >> >>>>>>> D-Click Web & Mobile Solutions
> >> >>>>>>> [EMAIL PROTECTED]
> >> >>>>>>> www.dclick.com.br/blog
> >> >>>>>>> www.dclick.com.br
> >> >>>>>>>
> >> >>>>>>
> >> >>>>>>
> >> >>>>>>
> >> >>>>>
> >> >>>>>
> >> >>>>>
> >> >>>>> --
> >> >>>>> Marcelo Curi Savioli
> >> >>>>> DClick Web & Mobile Solutions
> >> >>>>> [EMAIL PROTECTED]
> >> >>>>> www.dclick.com.br/blog
> >> >>>>> www.dclick.com.br
> >> >>>>>
> >> >>>>
> >> >>>
> >> >>>
> >> >>>
> >> >>
> >> >>
> >> >>
> >> >> --
> >> >> Marcelo Curi Savioli
> >> >> DClick Web & Mobile Solutions
> >> >> [EMAIL PROTECTED]
> >> >> www.dclick.com.br/blog
> >> >> www.dclick.com.br
> >> >>
> >> >
> >> >
> >> > >
> >> >
> >>
> >>
> >>
> >> --
> >> Felipe - http://bobfernandes.wordpress.com
> >>
> >>
> >
> >
> > >
> >
>
>
>
> --
> Felipe - http://bobfernandes.wordpress.com
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

ListaContas.mxml:
<?xml version="1.0" encoding="utf-8"?>
<mx:AdvancedDataGrid xmlns:mx="http://www.adobe.com/2006/mxml"; width="100%" 
height="100%"
        click="mostraAlert(categories);">
        <mx:Script>
                <![CDATA[
                        import mx.controls.Alert;
                        import br.com.ardenghi.model.vo.CategoryVO;
                        import mx.collections.ArrayCollection;
                
                        public static const CREATE:String = 'create';
                        public static const REMOVE:String = 'remove';   
                        public static const SELECT:String = 'select';   
                        
                        [Bindable] public var categories:ArrayCollection;
                        [Bindable] public var selectedCategory:CategoryVO;
                        
                        private function selectBook(pCategory:CategoryVO):void{
                                selectedCategory = pCategory ;
                                dispatchEvent(new Event(SELECT, true));
                        }
                        private var ac:ArrayCollection = new 
ArrayCollection([{name:"DataGrid", size:"3 kb",  
                                children:new 
ArrayCollection([{name:"DataGridBase", size:"4 kb"}, {name:"DataGridHeader", 
size:"2 kb"}])
                        }]);
                        private function 
mostraAlert(texto:ArrayCollection):void{
                                Alert.show(texto.length.toString(),"Quantidade 
de Categorias");
                        //      gc.refresh();
                        }
                ]]>
        </mx:Script>
        <mx:dataProvider>
                <mx:GroupingCollection id="gc" source="{categories}">
            <mx:Grouping>
                <mx:GroupingField name="catA"/>
                <mx:GroupingField name="catB"/>
                <mx:GroupingField name="catC"/>
                <mx:GroupingField name="catD"/>
            </mx:Grouping>
            </mx:GroupingCollection>
        </mx:dataProvider>
        <mx:columns>
                <mx:AdvancedDataGridColumn dataField="catA" />
                <mx:AdvancedDataGridColumn dataField="catB" />
                <mx:AdvancedDataGridColumn dataField="catC" />
                <mx:AdvancedDataGridColumn dataField="catD" />
        </mx:columns>
</mx:AdvancedDataGrid>
package br.com.ardenghi.view{
        import br.com.ardenghi.ApplicationFacade;
        import br.com.ardenghi.model.CategoryProxy;
        import br.com.ardenghi.model.vo.CategoryVO;
        import br.com.ardenghi.view.components.ListaContas;
        
        import flash.events.Event;
        
        import mx.controls.Alert;
        
        import org.puremvc.as3.interfaces.IMediator;
        import org.puremvc.as3.interfaces.INotification;
        import org.puremvc.as3.patterns.mediator.Mediator;
        
        public class ListaContasMediator extends Mediator implements IMediator{
                
                public static const NOME:String         = "ListaContasMediator";
                
                private var categoryProxy:CategoryProxy;
                
                public function ListaContasMediator(viewComponent:Object){
                        super(NOME,viewComponent);
                        
                        listaContas.addEventListener(ListaContas.CREATE, 
onCreate);
                        listaContas.addEventListener(ListaContas.REMOVE, 
onDelete);
                        listaContas.addEventListener(ListaContas.SELECT, 
onSelect);
                        
                        categoryProxy = 
facade.retrieveProxy(CategoryProxy.NOME) as CategoryProxy;
                        
                        listaContas.categories = categoryProxy.categories;
                        listaContas.gc.source = listaContas.categories;
                        listaContas.gc.refresh();
                }
                private function onCreate(pEvt:Event):void{
                        var newCategory:CategoryVO = new CategoryVO();
                        newCategory.categoria = "Categoria";
                        newCategory.idcategoriasup = 1;
                        categoryProxy.createCategory(newCategory);
                }
                private function onSelect(pEvt:Event):void{
                        sendNotification(ApplicationFacade.CATEGORY_SELECTED, 
listaContas.selectedCategory);
                }
                private function onDelete(pEvt:Event):void{
                        
categoryProxy.deleteCategory(listaContas.selectedCategory);
                }
                override public function listNotificationInterests():Array{
                        return [ ApplicationFacade.CATEGORY_SELECTED ];
                }
                override public function 
handleNotification(notification:INotification):void{
                        switch(notification.getName()){
                                case ApplicationFacade.CATEGORY_SELECTED:
                                listaContas.selectedCategory = 
notification.getBody() as CategoryVO;
                                break;
                        }
                }
                private function get listaContas():ListaContas{
                        return viewComponent as ListaContas
                }
        }
}

Responder a