Sim, tem q ter getters e setters para que o acessor via [ ] (colchetes)
funcione... OU ... pode deixar os atributos public diretamente.
(Essa questao de getters/setters em VOs no AS3 é um pouco relativa. Se vc
precisa do VO só para transportar dados, pra q precisa de getters/setters?
Vc por acaso vai validar alguma informação no setter, ou ainda executar
alguma lógica no getter?
http://www.jamesward.com/2010/05/07/flex-and-java-differences-getters-setters/
)

Faça o mesmo teste que sugeri antes, coloque um breakpoint na primeira linha
do método e verifique oq está sendo passado como argumento no "item".

A propósito, vc fez o teste anterior?
Verificou se taskGroupDomain realmente tem uma description válida?

(ps: nao tenho certeza, na verdade nao lembro, mas acho q labelFunctions
requer q o método seja public... mas realmente nao lembro de cabeça agora,
tenta aí).

Sobre sua pergunta anterior, sim: vc pode usar o Flex 3.5 SDK e continuar
com o Flex Builder 3 normalmente.
Assim como, vc também pode usar o Flash Builder 4 (a nova IDE) e desenvolver
com Flex 3.5 SDK (eu estou fazendo isso, mas ressalto q a compilação é para
o Flex 3.5 e nao para Flex 4 com componentes Halo).

[]s





Em 26 de maio de 2010 14:34, Sérgio Fantin
<[email protected]>escreveu:

> Olá Mário,
>
> gostei muito da explicação! Me ajudou muito e tenho certeza que vai ajudar
> outras pessoas que estão iniciando com Flex.
>
> Só uma coisa... optei pela terceira dica:
>
> 3) caso vc nao queira "sujar" seus VOs com esses getters...
>
> Coloquei o método no meu mxml pra testar:
>
> private function propChainLabelFunction(item:Object,
> column:DataGridColumn):String {
>        var currentItem:Object = item;
>        var chain:Array = column.dataField.split(".");
>        for each (var prop:String in chain){
>            currentItem = currentItem[prop];
>         }
>        return currentItem.toString();
> }
>
> No grid:
>
> <mx:DataGridColumn headerText="Tarefa Agendada" id="taskSchedule"
> dataField="taskGroupDomain.description"
> labelFunction="propChainLabelFunction"/>
>
> Mas não funfou. Acontece uma coisa interessante... quando eu retiro a 
> labelFunction="propChainLabelFunction"
> minha grid funciona quase toda, só a coluna id="taskSchedule" não é
> preechida. Mas quando eu deixo com a labelFunction parece que a tela para de
> funcionar... nem as imagens aparecem. Não entendi porque isso ocorre.
> Uma dúvida... os atributos das minhas classes envolvidas têm que ter
> gets/sets?
>
>
> 2010/5/26 Sérgio Fantin <[email protected]>
>
> O meu SDK tá na versão 3.2. Eu posso fazer o upgrade pra versão 3.5 e
>> continuar com o Flex Builder 3?
>>
>> 2010/5/26 Mário Júnior <[email protected]>
>>
>> Desculpa... tab e espaço na hora errada =D
>>> Reescrevendo a msg anterior:
>>> ----
>>>
>>> Acho q não é isso nao @Guilherme, parece q o acesso dele está certo.
>>>
>>> @Sergio, coloca o breakpoint nessa linha:
>>>
>>>  var obj:TaskDomain = row as TaskDomain;
>>> e veja pela aba "Variables" se o "obj" possui um *
>>> taskGroupDomain.description*
>>> só para desencargo de consciencia verifica isso.
>>>
>>>
>>>
>>> Agora, algumas dicas:
>>>
>>> 1) Se vc usa Flex SDK 3.5, vc pode declarar esse campo diretamente no
>>> dataField="taskGroupDomain.description"
>>> Mas ressalto q isso só funciona no 3.5 pra frente.
>>>
>>> 2) Usar um simples getter como decorator/helper/wrapper (tem gente q usa
>>> nome pra tudo nisso) na sua classe TaskDomain que já retorne essa
>>> description para vc:
>>>
>>> public class TaskDomain {
>>>
>>>         ....
>>>
>>>
>>>         private var _taskGroup:TaskGroupDomain;
>>>
>>>         public function get taskGroupDomain():TaskGroupDomain {
>>>             return _taskGroup;
>>>         }
>>>
>>>         //Helper / Wrapper / Decorator
>>>         public function get taskGroupDescription():String{
>>>
>>>             return (_taskGroup != null) ? _taskGroup.description :
>>> "grupo nao disponivel";
>>>         }
>>>
>>> e daí no dataField do column vc coloca dataField="taskGroupDescription"
>>>
>>>
>>> 3) caso vc nao queira "sujar" seus VOs com esses getters, e caso NAO
>>> esteja usando o Flex SDK 3.5 mas gostaria de usar nested objects no
>>> datafield, pode usar ainda essa dica do Beck:
>>> http://groups.adobe.com/people/43722/profile
>>>
>>> Daí vc pega a propChainLabelFunction e coloca ela em alguma classe
>>> "utils" da vida, e no seu datagrid colum declare:
>>> dataField="taskGroupDomain.description"
>>> labelFunction="{UtilClass.propChainLabel}"
>>>
>>>
>>>
>>> Enfim, são 3 dicas basicas só pra evitar de q vc tenha vários
>>> labelsFunctions espalhados pelo seu mxml.
>>>
>>>
>>> []s
>>>
>>> *
>>> *
>>>
>>>
>>>
>>>
>>>
>>>
>>> Em 26 de maio de 2010 13:27, Mário Júnior <[email protected]>escreveu:
>>>
>>> Acho q não é isso nao Guilherme, parece q
>>>>
>>>> Coloca o breakpoint nessa linha:
>>>>
>>>> var obj:TaskDomain = row as TaskDomain;
>>>>
>>>> Em 26 de maio de 2010 12:52, Guilherme Sjlender 
>>>> <[email protected]>escreveu:
>>>>
>>>> Muda...
>>>>>
>>>>> return obj.taskGroupDomain.description;
>>>>>
>>>>> para
>>>>>
>>>>> return obj.description;
>>>>>
>>>>> Pois o obj é a classe TaskDomain
>>>>>
>>>>> Att.
>>>>> Em 26 de maio de 2010 12:33, Sérgio Fantin <
>>>>> [email protected]> escreveu:
>>>>>
>>>>>  Estou tentando exibir a descrição, mas não estou tendo muito sucesso:
>>>>>>
>>>>>>
>>>>>> protected function *labelFunctionTaskGroupDescription*(row:Object,
>>>>>> column:DataGridColumn):String {
>>>>>>       var obj:TaskDomain = row as TaskDomain;
>>>>>>
>>>>>>       return obj.taskGroupDomain.description;
>>>>>> }
>>>>>>
>>>>>> <mx:DataGridColumn headerText="Tarefa Agendada" id="taskSchedule"
>>>>>> labelFunction="*labelFunctionTaskGroupDescription*"/>
>>>>>>
>>>>>>     [Bindable]
>>>>>>     [RemoteClass(alias="br.com.sumus.coyote.domain.TaskDomain")]
>>>>>>
>>>>>>     public class TaskDomain {
>>>>>>
>>>>>>         public function TaskDomain(){
>>>>>>
>>>>>>         }
>>>>>>
>>>>>>         public var id:int;
>>>>>>         public var description:String;
>>>>>>         public var register:Date;
>>>>>>
>>>>>>         private var _taskGroup:TaskGroupDomain;
>>>>>>
>>>>>>         public function get taskGroupDomain():TaskGroupDomain {
>>>>>>             return _taskGroup;
>>>>>>         }
>>>>>>
>>>>>>         public function set
>>>>>> taskGroupDomain(value:TaskGroupDomain):void {
>>>>>>             _taskGroup = value;
>>>>>>         }
>>>>>>     }
>>>>>>
>>>>>>     [Bindable]
>>>>>>     [RemoteClass(alias="br.com.sumus.coyote.domain.TaskGroupDomain")]
>>>>>>
>>>>>>     public class TaskGroupDomain {
>>>>>>
>>>>>>         public function TaskGroupDomain(){
>>>>>>
>>>>>>         }
>>>>>>
>>>>>>         public var id:int;
>>>>>>         private var _description:String;
>>>>>>
>>>>>>         public function get description():String {
>>>>>>             return _description;
>>>>>>         }
>>>>>>
>>>>>>         public function set description(value:String):void {
>>>>>>             _description = value;
>>>>>>         }
>>>>>>     }
>>>>>>
>>>>>> Do jeito que está não aparece nada na aplicação.
>>>>>>
>>>>>> Alguém pode me dizer onde estou errando?
>>>>>>
>>>>>> --
>>>>>> Sérgio Fantin
>>>>>> http://serjaum.wordpress.com
>>>>>>
>>>>>> --
>>>>>> 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
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> -----------------------------------------------------------
>>>>> Guilherme Sjlender                            -
>>>>> Desenvolvedor RIA - Flex/Java         -
>>>>> http://site.gflex.biz                       -
>>>>> ------------------------------------------------
>>>>>
>>>>> --
>>>>> 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
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Mario Junior
>>>> http://blog.mariojunior.com/
>>>> @mariojunior
>>>>
>>>
>>>
>>>
>>> --
>>> Mario Junior
>>> http://blog.mariojunior.com/
>>> @mariojunior
>>>
>>> --
>>> 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
>>>
>>
>>
>>
>> --
>> Sérgio Fantin
>> http://serjaum.wordpress.com
>>
>
>
>
> --
> Sérgio Fantin
> http://serjaum.wordpress.com
>
> --
> 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
>



-- 
Mario Junior
http://blog.mariojunior.com/
@mariojunior

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

Responder a