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