José,
Funcionou!
O código ficou dessa forma:
private function alertDg():void
{
var ac:ArrayCollection = dg.dataProvider as ArrayCollection;
var pmod:Pmod = ac.getItemAt(0) as Pmod;
Alert.show(pmod.idPlan.toString());
}
Criei uma variável do tipo ArrayCollection, peguei o primeiro
Com a sua implementação, mesmo que retorne um único Pmod, ele está
retornando num List 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ê
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()
{
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
> José,
>
> Não consigo debugar a aplicação. Motivo: estou usando querystrin
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
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());
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
> Como vc tá usando .net, dá
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
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).
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
> Se insiro a verificação, não ex
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
> private function exibeX(): void {
> var obj: Object = dg.dataProvider;
> if (obj
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
> E se eu carregar como um Ob
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
> Pode ser feito como vc fez.
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
ArrayColl
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
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 u
@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
2
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
18 matches
Mail list logo