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