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