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