Obrigado galera, foi puro vacilo meu!

public function resultadoRetornaAreas(e:ResultEvent):void{
       listaAreas = ArrayCollection(e.result.dados);
}

fiz rapidamente e faltou o *new!

maneira correta:

*  listaAreas = *new* ArrayCollection(e.result.dados);

2008/9/15 Guilherme Blanco <[EMAIL PROTECTED]>

> Eu criei um component genérico para obtenção de dados do Banco.
>
> Já que o escambo de código aqui é permitido.... segue minha implementação.
> Basicamente eu criei um objeto de resposta na forma de XML que me
> informa se a requisição foi bem sucedida ou não.
>
> Ao invés de estourar erros ou exceptions no PHP, eu defino as
> mensagens no meu objeto resposta e o retorno. A estrutura é mais ou
> menos esta:
>
> <response>
>  <status><![CDATA[ ERROR ]]></status>
>  <message><![CDATA[ Erro inesperado ao retornar dados ]]></message>
>  <data/>
> </response>
>
> No caso de uma requisição bem executada - e espeficamente no caso de
> um combobox -, a resposta é algo parecido com isto:
>
> <response>
>  <status><![CDATA[ OK ]]></status>
>  <message/>
>  <data>
>    <item>
>      <id><![CDATA[ 1 ]]></id>
>      <name><![CDATA[ Banco do Brasil ]]></name>
>    </item>
>    <item>
>      <id><![CDATA[ 2 ]]></id>
>      <name><![CDATA[ Correios ]]></name>
>    </item>
>  </data>
> </response>
>
>
> E aí eu tenho meu componente base de implementação chamado de
> DynamicComboBox:
>
> <?xml version="1.0" encoding="utf-8"?>
> <mx:ComboBox xmlns:mx="http://www.adobe.com/2006/mxml"; labelField="name">
>        <mx:Script>
>                <![CDATA[
>
>                        import mx.events.ListEvent;
>                        import mx.rpc.events.ResultEvent;
>
>
>                        public static var EVENT:String = "Change";
>
>
>                        protected var _selectedId:String = "-1";
>
>                        public function set selectedId(value:String):void
>                        {
>                                _selectedId = value;
>
>                                updateSelection();
>                        }
>
>                        public function get selectedId():String
>                        {
>                                return _selectedId;
>                        }
>
>
>                        public function set url(value:String):void
>                        {
>                                itemService.url = value;
>                        }
>
>                        public function get url():String
>                        {
>                                return itemService.url;
>                        }
>
>
>                        public function synchronize():void
>                        {
>                                itemService.cancel();
>                                itemService.send();
>                        }
>
>
>                        protected function
> handleItemServiceResult(event:ResultEvent):void
>                        {
>                                dataProvider =
> XMLList(XMLList(XML(event.result).data)[0].item);
>
>                                if (_selectedId != "-1") {
>                                        updateSelection();
>                                }
>                        }
>
>
>                        protected function updateSelection():void
>                        {
>                                if (this.dataProvider != null)
>                                {
>                                        var items:XMLList =
> XMLList(this.dataProvider);
>
>                                        for (var i:int = 0, len:uint =
> items.length(); i < len; i++)
>                                        {
>                                                var item:XML =
> XML(items[i]);
>
>                                                var id:String =
> item.hasOwnProperty('id')
>                                                        ? XML(item.id
> ).toString()
>                                                        : XMLList([EMAIL 
> PROTECTED]
> ).toString();
>
>                                                if (_selectedId == id)
>                                                {
>                                                        this.selectedIndex =
> i;
>
>
>  this.dispatchEvent(new ListEvent(ListEvent.CHANGE, false, false, 0, i));
>
>                                                        break;
>                                                }
>                                        }
>                                }
>                        }
>
>                ]]>
>        </mx:Script>
>
>        <mx:HTTPService id="itemService" method="POST" useProxy="false"
>                        resultFormat="e4x"
> result="handleItemServiceResult(event)"/>
> </mx:ComboBox>
>
>
>
> Com este componente, eu tenho a possibilidade de auto-selecionar items
> baseado no ID, alterar a URL de pesquisa, etc. Além disto, eu
> implementei o sistema de notificação de alterações através da
> aplicação. O que isto significa? Cada componente que herdar de
> DynamicComboBox, tem um evento relacionado à sua alteração chamado de
> EVENT. Por exemplo... neste caso específico, a minha resposta é
> proveniente de uma consulta de Companies (Empresas). Portanto, eu crio
> meu componente CompanyComboBox e nomeio meu evento para atualização de
> dados como "ChangeCompany". Minha implementação da subclasse fica
> assim:
>
> <?xml version="1.0" encoding="utf-8"?>
> <DynamicComboBox xmlns="core.controls.*"
>                xmlns:mx="http://www.adobe.com/2006/mxml";
>                initialize="init()" prompt="Select Company">
>        <mx:Script>
>                <![CDATA[
>
>                        import core.Environment;
>                        import mx.core.Application;
>
>
>                        public static var EVENT:String = "ChangeCompany";
>
>
>                        protected function init():void
>                        {
>                                var app:Application =
> Environment.getApplication();
>
>                                app.addEventListener(CompanyComboBox.EVENT,
> function (e:Event):void
>                                {
>                                        synchronize();
>                                });
>
>                                this.url =
> Environment.getInstance().CORE_URL +
> "Controls_CompanyComboBox/Item";
>                                this.synchronize();
>                        }
>
>                ]]>
>        </mx:Script>
> </DynamicComboBox>
>
>
> Peço desculpas por não expor minha classe Environment, mas ela
> controle alguns acessos específicos. Basicamente é uma classe
> Singleton e a utilização dela aqui é para obter a aplicação e a URL
> base do código base do lado do PHP:
>
> public static function getApplication():Application
> {
>        return Application(Application.application);
> }
>
> public const CORE_URL:String =
> "http://localhost:20080/aplicacao/web/core_dev.php/";;
>
>
> Eu modifiquei o componente para usar a classe mx:HTTPService do Flex e
> não o meu componente rpc:Service que trata automaticamente as chamadas
> que geraram erro.
> Com toda essa parafernália.... basta apenas implementar as subclasses
> e tudo funcionará perfeitamente para você.
>
>
> Espero ter ajudado.
>
>
> []s,
>
> 2008/9/15 Mário Júnior <[EMAIL PROTECTED]>:
> > primeiro... tenha certeza q o event.result contenha dados.
> > segundo.. verifique qual a estrutura do objeto retornado para o
> resultEvent,
> > e se estão vindo carregados (não nulos).
> >
> > joga um breakpoint no método q vc associa o e.result ao seu
> arrayCollection.
> > (tenho 90% de certeza que e.result.dados não existe)
> >
> > only.
> >
> > um abraço.
> >
> >
> >
> > 2008/9/15 Jaison <[EMAIL PROTECTED]>
> >>
> >> Como vocês fazem pra popular o combobox com os dados vindo do banco?
> >>
> >>
> >> 2008/9/15 Jaison <[EMAIL PROTECTED]>
> >>>
> >>> no meu caso não é isso não, pois a variavel ta criada.
> >>>
> >>>
> >>> 2008/9/15 Vinícius Velasco <[EMAIL PROTECTED]>
> >>>>
> >>>> Eu nao sei mto de flex nao mas uma vez q isso aconteceu comigo era pq
> eu
> >>>> nao tinha criado a variavel arraycollection q no seu caso chama
> listaAreas
> >>>> como Bindable
> >>>>
> >>>> 2008/9/15 Jaison <[EMAIL PROTECTED]>
> >>>>>
> >>>>> pessoal seguinte, eu tenho um metodo que popula um combobox:
> >>>>>
> >>>>> public function carregaAreas():void{
> >>>>>        patologia.retornaAreas.send();
> >>>>> }
> >>>>>
> >>>>> public function resultadoRetornaAreas(e:ResultEvent):void{
> >>>>>        listaAreas = ArrayCollection(e.result.dados);
> >>>>> }
> >>>>>
> >>>>> no php ta assim:
> >>>>>
> >>>>>        function retornaAreas(){
> >>>>>                $retorno['dados'] ="";
> >>>>>                $i = 0;
> >>>>>                $query = "select * from area ORDER BY nome_area ASC";
> >>>>>                $resultado = pg_query(conecta(),$query);
> >>>>>                if(pg_num_rows($resultado)>0){
> >>>>>                        while ($linha = pg_fetch_array($resultado)) {
> >>>>>                                $retorno['dados'][$i]['id_area'] =
> >>>>> $linha['id_area'];
> >>>>>                                $retorno['dados'][$i]['nome_area'] =
> >>>>> utf8_decode($linha['nome_area']);
> >>>>>                                $i++;
> >>>>>                        }
> >>>>>                }
> >>>>>                return $retorno;
> >>>>>        }
> >>>>>
> >>>>> no flex ta assim:
> >>>>>
> >>>>> <mx:ComboBox x="10" y="43" width="326" dataProvider="{listaAreas}"></
> >>>>> mx:ComboBox>
> >>>>>
> >>>>>
> >>>>> minha dúvida: Porque naum popula? eu quero que apareça no combobox o
> >>>>> nome da area (nome_area) mas naum aparece nada :( Alguem poderia me
> >>>>> falar onde estou pecando?! :(
> >>>>>
> >>>>> abraço Galera!
> >>>>>
> >>>>>
> >>>>>
> >>>>> --
> >>>>> Bel. Vinícius Velasco
> >>>>> Analista de Desenvolvimento - Ábaco
> >>>>> MSN: [EMAIL PROTECTED]
> >>>>> Skype: ircvinicius
> >>>>> Fone: 66 8411 0245
> >>>>> Rondonópolis - Mato Grosso - Brasil
> >>>>> "Tudo Posso Naquele que me Fortalece" Fil 4:13
> >>>>
> >>>>
> >>>
> >>>
> >>>
> >>> --
> >>> Jaison.
> >>> msn: [EMAIL PROTECTED] / 48. 84191383
> >>> Site: www.portalandroid.org
> >>
> >>
> >>
> >> --
> >> Jaison.
> >> msn: [EMAIL PROTECTED] / 48. 84191383
> >> Site: www.portalandroid.org
> >>
> >>
> >
> >
> >
> > --
> > Mário de Souza Júnior
> > Programador Java / Adobe Flex
> > (44) 4009-3550 Maringá-PR
> > http://blog.mariojunior.com
> > [EMAIL PROTECTED] (gtalk, msn, etc..)
> >
> > >
> >
>
>
>
> --
> Guilherme Blanco - Web Developer
> CBC - Certified Bindows Consultant
> Cell Phone: +55 (16) 9166-6902
> MSN: [EMAIL PROTECTED]
> URL: http://blog.bisna.com
> Rio de Janeiro - RJ/Brazil
>
> >
>


-- 
Jaison.
msn: [EMAIL PROTECTED] / 48. 84191383
Site: www.portalandroid.org

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