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

Responder a