Com a sua implementação, mesmo que retorne um único Pmod, ele está retornando num List<Pmod> de um único objeto.
O flex entende o List como um ArrayCollection de um único objeto Pmod. Portanto é só pegar o primeiro elemento deste ArrayCollection, dar um cast para Pmod e pegar o atributo idPlan. Se você não quiser fazer o cast para Pmod, dá pra usar o hasProperty. Aí é só dar o Alert! 2009/12/8 Airton Toyansk <atoya...@gmail.com> > Pois é, não deu certo... > > Seguem os códigos das classes: > > *AS (Pmod.as)* > > package com.radix.utils > { > [RemoteClass(alias="Pmod.Pmod")] > > public class Pmod > { > public static const NAMESPACE:String = "Pmod.Pmod"; > > public var idPlan:int; > > public function Pmod() > { > } > } > } > > *C# (Pmod.cs)* > **Apenas o método que estou chamando** > > public List<Pmod> consDt() > { > StringBuilder sql = new StringBuilder(); > sql.Append(" > SELECT "); > sql.Append(" > idPlan "); > sql.Append(" > FROM "); > sql.Append(" > Planejamento "); > sql.Append(" > WHERE "); > sql.Append(" idPlan=(SELECT MAX(idPlan) FROM > Planejamento) "); //preciso apenas do id do último registro > inserido pelo usuário idUser_Plan (usando Access por enquanto) > sql.Append(" > AND "); > sql.Append(" idUser_Plan = > 123456 "); //por enquanto estou pegando o > usuário estaticamente, pois também não consegui mandar o seu ID da > querystring dinamicamente > OleDbConnection con = new OleDbConnection(_stringConexao); > OleDbCommand cmd = new OleDbCommand(sql.ToString(), con); > List<Pmod> lista = new List<Pmod>(); > con.Open(); > using (con) > { > OleDbDataReader reader = cmd.ExecuteReader(); > while (reader.Read()) > lista.Add(new Pmod(reader)); > } > return lista; > } > > No arquivo MXML, faço os métodos do RemoteObject: > > <mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="*" > xmlns:ns1="flexlib.containers.*" width="100%" height="100%" > creationComplete="rMod.consDt()"> > <mx:RemoteObject id="rMod" destination="fluorine" showBusyCursor="true" > source="Pmod.Pmod"> > <mx:method name="consDt" result="getDataR(event)" > fault="OnError(event)" /> > </mx:RemoteObject> > > E, por fim, o getDataR: > > public function getDataR(e:ResultEvent):void > { > dg.dataProvider = e.result as Object; > } > > Obrigado! > > Airton Toyansk > > 2009/12/8 José Alexandre D'Abruzzo Pereira <jose...@gmail.com> > >> Tenta colocar estes valores na URL que o flex usa. Não sei se funciona. É >> uma sugestão. >> >> Se não der, tenta postar as classes Pmod em C# e em AS. Pra ver se dá pra >> te ajudar de outra forma. >> >> []'s >> >> >> 2009/12/8 Airton Toyansk <atoya...@gmail.com> >> >>> José, >>> >>> Não consigo debugar a aplicação. Motivo: estou usando querystring na url >>> para informar alguns dados de usuário (como um login), e gravar os dados >>> neste usuário. Acontece que a aplicação inicia sem estes dados, e tenho que >>> colocá-las manualmente no meu ambiente de teste (na publicação, estes dados >>> virão de outro sistema), e, quando dou refresh na página web, o debug >>> finaliza... >>> >>> Airton >>> >>> 2009/12/8 Airton Toyansk <atoya...@gmail.com> >>> >>>> Sim, eu tenho esta classe, tb chamada de Pmod >>>> E nela eu tenho >>>> package Pmod { >>>> [RemoteClass(alias="Pmod.Pmod")] >>>> >>>> public class Pmod { >>>> public var atributoX:Number; >>>> } >>>> } >>>> >>>> Tentei ainda >>>> private function alertDg():void >>>> { >>>> >>>> var pmod:Pmod = dg.dataProvider; >>>> Alert.show(pmod.idPlan.toString()); // idPlan é o atributo que eu >>>> quero recuperar >>>> } >>>> >>>> E exibiu o seguinte erro: >>>> 1118: Implicit coercion of a valeu with static type Object to a possibly >>>> unrelated type com.radix.utils:Pmod. >>>> >>>> Vou debugar... >>>> >>>> Obrigado! >>>> >>>> >>>> >>>> 2009/12/8 José Alexandre D'Abruzzo Pereira <jose...@gmail.com> >>>> >>>>> A marcação seria algo como : >>>>> >>>>> package vo { >>>>> [RemoteClass(alias="vo.Pmod")] >>>>> public class Pmod { >>>>> public var atributoX:Number; >>>>> } >>>>> } >>>>> >>>>> sendo que você tem que substituir vo.Pmod pelo namespace completo da >>>>> sua classe no C#. >>>>> >>>>> >>>>> 2009/12/8 José Alexandre D'Abruzzo Pereira <jose...@gmail.com> >>>>> >>>>>> Como vc tá usando .net, dá pra vc ter uma classe Pmod no flex. >>>>>> É só marcar ela como sendo a mesma classe do .net. >>>>>> >>>>>> No alert, vc teria então: >>>>>> >>>>>> var pmod:Pmod = dg.dataProvider; >>>>>> Alert.show(pmod.atributo_que_vai_exibir); >>>>>> >>>>>> Algo assim... Isto ajuda, mas não é necessário. Se você debugar, já >>>>>> vai descobrir onde está errado. >>>>>> >>>>>> >>>>>> 2009/12/8 Airton Toyansk <atoya...@gmail.com> >>>>>> >>>>>>> Tentei outra coisa. >>>>>>> >>>>>>> Inseri o seguinte código: >>>>>>> private function alertDg():void >>>>>>> >>>>>>> { >>>>>>> var obj: Object = dg.dataProvider; >>>>>>> Alert.show(obj.toString()); >>>>>>> } >>>>>>> >>>>>>> E o Alert me exibiu a seguinte mensagem: >>>>>>> [object Pmod] >>>>>>> >>>>>>> Sendo que Pmod é o nome do meu source no RemoteObject (das classes no >>>>>>> Flex e no .Net). >>>>>>> É o mesmo resultado em usar >>>>>>> private function alertDg():void >>>>>>> { >>>>>>> Alert.show(dg.dataProvider.toString()); >>>>>>> } >>>>>>> >>>>>>> Isso ajuda a descobrir o que pode ser? >>>>>>> >>>>>>> Obrigado! >>>>>>> >>>>>>> 2009/12/8 José Alexandre D'Abruzzo Pereira <jose...@gmail.com> >>>>>>> >>>>>>>> Sem ver o código todo fica difícil de saber o que é. >>>>>>>> >>>>>>>> Debuga tanto o método result do remote quanto antes de exibir o >>>>>>>> alert. Às vezes a propriedade tem algum erro de digitação. Debugando >>>>>>>> dá pra >>>>>>>> ver direito como está retornando do remote. >>>>>>>> >>>>>>>> >>>>>>>> 2009/12/8 Airton Toyansk <atoya...@gmail.com> >>>>>>>> >>>>>>>>> Se insiro a verificação, não exibe Alert (e não dá erro). >>>>>>>>> Se comento o if, exibe o erro: >>>>>>>>> *Error: Unknown Property: 'X'* >>>>>>>>> >>>>>>>>> Ou seja, este objeto não tem o atributo X... >>>>>>>>> >>>>>>>>> >>>>>>>>> 2009/12/8 José Alexandre D'Abruzzo Pereira <jose...@gmail.com> >>>>>>>>> >>>>>>>>> private function exibeX(): void { >>>>>>>>>> var obj: Object = dg.dataProvider; >>>>>>>>>> if (obj.hasProperty("X")) // Como ele retorna um object, é bom >>>>>>>>>> verificar se aquele objeto tem o atributo X. >>>>>>>>>> Alert.show(obj["X"]); // isto é o equivalente a obj.X; >>>>>>>>>> } >>>>>>>>>> >>>>>>>>>> 2009/12/8 Airton Toyansk <atoya...@gmail.com> >>>>>>>>>> >>>>>>>>>> E se eu carregar como um Object, dessa forma: >>>>>>>>>>> dg.dataProvider = e.result *as* Object; >>>>>>>>>>> Ele exibe no DataGrid do mesmo jeito. Mas como exibir no Alert >>>>>>>>>>> (estou com dificuldade mesmo sendo um objeto)? >>>>>>>>>>> >>>>>>>>>>> Obrigado! >>>>>>>>>>> >>>>>>>>>>> Airton Toyansk >>>>>>>>>>> >>>>>>>>>>> 2009/12/7 José Alexandre D'Abruzzo Pereira <jose...@gmail.com> >>>>>>>>>>> >>>>>>>>>>> Pode ser feito como vc fez. Aí na hora de dar o Alert é só fazer >>>>>>>>>>>> ArrayCollection(dg.dataProvider) e pegar o ArrayCollection e >>>>>>>>>>>> indexa de zero. >>>>>>>>>>>> Vc vai ter um Object. Aí é só pegar a propriedade X do Object: >>>>>>>>>>>> obj.X ou obj["X"]. >>>>>>>>>>>> >>>>>>>>>>>> Se vc recebe sempre um objeto, será que é necessário colocar num >>>>>>>>>>>> ArrayCollection? Não dá pra colocar direto num objeto? Isto também >>>>>>>>>>>> acaba >>>>>>>>>>>> dependendo do retorno do seu método na sua linguagem server-side. >>>>>>>>>>>> Se estiver >>>>>>>>>>>> retornando um ArrayList ou algo assim, tudo bem. Se estiver >>>>>>>>>>>> retornando >>>>>>>>>>>> apenas um objeto, acho que não compensa colocar num >>>>>>>>>>>> ArrayCollection. >>>>>>>>>>>> >>>>>>>>>>>> Tem muitas formas de fazer o que você quer. Só que tem que >>>>>>>>>>>> escolher a melhor para deixar o swf mais leve e não sobrecarregar >>>>>>>>>>>> o cliente >>>>>>>>>>>> =) >>>>>>>>>>>> >>>>>>>>>>>> 2009/12/7 Airton Toyansk <atoya...@gmail.com> >>>>>>>>>>>> >>>>>>>>>>>> Na verdade, resolveria se este registro fosse exibido em um >>>>>>>>>>>>> TextInput. Mas não consegui carregá-lo num campo de texto no >>>>>>>>>>>>> creationComplete, só num DataGrid, dessa forma: >>>>>>>>>>>>> >>>>>>>>>>>>> public function getDataR(e:ResultEvent):void >>>>>>>>>>>>> { >>>>>>>>>>>>> dg.dataProvider = e.result as ArrayCollection; >>>>>>>>>>>>> } >>>>>>>>>>>>> >>>>>>>>>>>>> Se estivesse num campo de texto, estaria resolvido mandar >>>>>>>>>>>>> para o Alert... Como posso fazer carregar num TextInput no método >>>>>>>>>>>>> chamado no >>>>>>>>>>>>> result do RemoteObject? >>>>>>>>>>>>> Vou tentar também a opção no DataGrid. >>>>>>>>>>>>> >>>>>>>>>>>>> Obrigado! >>>>>>>>>>>>> >>>>>>>>>>>>> Airton Toyansk >>>>>>>>>>>>> 2009/12/6 José Alexandre D'Abruzzo Pereira <jose...@gmail.com> >>>>>>>>>>>>> >>>>>>>>>>>>>> Se é apenas uma linha tem que ser um DataGrid para exibir >>>>>>>>>>>>>> estes valores? >>>>>>>>>>>>>> >>>>>>>>>>>>>> De qualquer forma, é só fazer no creationComplete da sua >>>>>>>>>>>>>> aplicação, um método que pegue a primeira posição do >>>>>>>>>>>>>> dataProvider do >>>>>>>>>>>>>> DataGrid, pegar o atributo X e dar o Alert. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Se os dados estiverem vindo de um RemoteObject ou de um >>>>>>>>>>>>>> WebService, tem que ser no método chamdo no result destas >>>>>>>>>>>>>> operações. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Se não der certo ainda, posta o seu código pra gente ver... >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> 2009/12/6 Airton Toyansk <atoya...@gmail.com> >>>>>>>>>>>>>> >>>>>>>>>>>>>>> @José, >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Quero poder exibir logo que carrego a aplicação. >>>>>>>>>>>>>>> No meu datagrid, tenho apenas uma coluna e uma linha >>>>>>>>>>>>>>> (sempre). E quero exibir este valor no Alert assim que o >>>>>>>>>>>>>>> usuário entre, ou >>>>>>>>>>>>>>> seja, sem selecionar o registro (por isso minha dificuldade, pq >>>>>>>>>>>>>>> não posso >>>>>>>>>>>>>>> usar o selectedItem). >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Airton Toyansk >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> 2009/12/6 José Alexandre D'Abruzzo Pereira < >>>>>>>>>>>>>>> jose...@gmail.com> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Mas em qual momento você quer exibir o Alert? >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Uma possibilidade seria no click da grid, selecionando uma >>>>>>>>>>>>>>>> linha. Aí neste método é só pegar dataGrid.selectedItem, que >>>>>>>>>>>>>>>> retorna um >>>>>>>>>>>>>>>> Object. Este é o objeto que popula aquela linha do grid. Aí é >>>>>>>>>>>>>>>> só acessa o >>>>>>>>>>>>>>>> atributo que popula a coluna X. Algo como: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> var obj: Object = dataGrid.selectedItem; >>>>>>>>>>>>>>>> Alert.show(obj.X); >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> 2009/12/6 Airton Toyansk <atoya...@gmail.com> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Pessoal, >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Existe alguma maneira de recuperar determinado dado de um >>>>>>>>>>>>>>>>> datagrid vindo de um BD e exibí-lo num Alert? >>>>>>>>>>>>>>>>> Algo como "exiba dado da coluna X e linha Y"? >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Agradeço as respostas. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Airton Toyansk >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>>> José Alexandre D'Abruzzo Pereira >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> -- >>>>>>>>>>>>>> José Alexandre D'Abruzzo Pereira >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> -- >>>>>>>>>>>> José Alexandre D'Abruzzo Pereira >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> José Alexandre D'Abruzzo Pereira >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> José Alexandre D'Abruzzo Pereira >>>>>>>> >>>>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> José Alexandre D'Abruzzo Pereira >>>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> José Alexandre D'Abruzzo Pereira >>>>> >>>>> >>>>> >>> >>> >>> >> >> >> -- >> José Alexandre D'Abruzzo Pereira >> >> >> >> >> >> -- José Alexandre D'Abruzzo Pereira --~--~---------~--~----~------------~-------~--~----~ Você recebeu esta mensagem porque está inscrito na lista "flexdev" Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com Para sair da lista, envie um email em branco para flexdev-unsubscr...@googlegroups.com Mais opções estão disponíveis em http://groups.google.com/group/flexdev -~----------~----~----~----~------~----~------~--~---