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 <[email protected]>
> 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 <[email protected]>
>
>> 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 <[email protected]>
>>
>>> 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 <[email protected]>
>>>
>>>> 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 <[email protected]>
>>>>
>>>>> 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 <[email protected]>
>>>>>
>>>>>> 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 <[email protected]>
>>>>>>
>>>>>>> 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 <[email protected]>
>>>>>>>
>>>>>>>> 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 <[email protected]>
>>>>>>>>
>>>>>>>> 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 <[email protected]>
>>>>>>>>>
>>>>>>>>> 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 <[email protected]>
>>>>>>>>>>
>>>>>>>>>> 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 <[email protected]>
>>>>>>>>>>>
>>>>>>>>>>> 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 <[email protected]>
>>>>>>>>>>>>
>>>>>>>>>>>>> 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 <[email protected]>
>>>>>>>>>>>>>
>>>>>>>>>>>>>> @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 <[email protected]
>>>>>>>>>>>>>> >
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> 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 <[email protected]>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> 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
>
> >
>
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---