obrigado pela dica!


2008/9/15 Tiago Antonio Jacobi <[EMAIL PROTECTED]>

> Boa noite,
>
> Uma outra forma de se fazer também...
>
> public function resultadoRetornaAreas(e:ResultEvent):void{
>        listaAreas = e.result.dados as ArrayCollection;
> }
> Que evita estes esquecimentos...hehehe
>
> Atenciosamente,
> --
> Tiago Antonio Jacobi
> Representante
> [EMAIL PROTECTED]
> Butiking Futebol Clube.
>
> 2008/9/15 Jaison <[EMAIL PROTECTED]>
>
>> 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
>>
>>   >>
>>


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