Agora entendi!

Acho importante detalhar meu problema, porque pode ser o mesmo
problema de outras pessoas.

A minha dificuldade se dava porque eu tinha UM MODELO MENTAR ERRADO do
funcionamento dos itemrenderers

O que eu pensava:

Os dados, no datagrid, passam por esse fluxo:

DataProvider -> DataGridColumn -> ItemRenderer

Nesse ponto: DataProvider -> DataGridColumn eu passo os dados através
da propriedade dataField do DataGridColumn. E essa propriedade só me
permite associar um campo do DataProvider.

Para eu passar os campos para o ItemRenderer, eu preciso primeiro,
passá-los para o DataGridColumn ( devido a ordem do fluxo ). E para eu
passar vários campos para o ItemRenderer, eu teria que passar vários
campos para o DataGridColumn... o que eu não tenho a menor idéia de
como fazer.

MAS ISSO ESTÁ INCOMPLETO!

O que eu falei acima é apenas uma forma de trabalhar com item
renderers. A outra forma é a seguinte:

Quando o List Component usa um item renderer ele preenche uma
propriedade do item renderer chamada data. No caso do datagrid essa
propriedade recebe O ITEM COMLETO DO DATAPROVIDER. Então, no meu item
renderer, através dessa propriedade, eu tenho acesso a qualquer campo
do item.

Tem um código exatamente sobre isso nessa página

Creating a complex inline item renderer or item editor
http://livedocs.adobe.com/flex/3/html/help.html?content=cellrenderer_6.html#199436

<mx:DataGridColumn dataField="Album">
                    <mx:itemRenderer>
                        <mx:Component>
                            <mx:VBox>
                                <mx:Text id="albumName"
                                    width="100%" text="{data.Album}"/>
                                <mx:Image id="albumImage"
                                    height="45" source="{data.Cover}"/
>
                            </mx:VBox>
                        </mx:Component>
                    </mx:itemRenderer>
                </mx:DataGridColumn>


On 22 out, 16:04, thiagoalgo <[email protected]> wrote:
> Você precisa criar uma classe que herda de VBox e, talvez, ainda
> implementar a interface
> mx.controls.listClasses.IDropInListItemRenderer para receber os dados
> dentro dessa classe. Dá uma pesquisada aí na internet que você
> encontra exemplos.
>
> On 22 out, 14:12, Bruno Carneiro <[email protected]> wrote:
>
> > Mas Thiago, como eu associaria 3 campos à mesma coluna?
>
> > On 22 out, 13:10, thiagoalgo <[email protected]> wrote:
>
> > > Cara, vendo essa imagem que você mandou, dá para resolver isso de
> > > maneira muito simples usando item renderer. Se você extender um VBox
> > > para usar como item renderer com certeza já consegue resolver seu
> > > problema.
>
> > > On 22 out, 11:19, Bruno Carneiro <[email protected]> wrote:
>
> > > > Marcelo, olhei o link realmente interessante. Não é o que eu preciso,
> > > > talvez possa ser adaptado. Ainda não sei como faria...
>
> > > > Vou tentar explicar melhor o que eu quero.
>
> > > > Eu tenho um datagrid, que me fornece uma lista de objetos do meu
> > > > dprovider.
>
> > > > Cada coluna do meu dgrid está associada a um campo do meu
> > > > dataprovider. Isso nós fazemos através da propriedade datafield.
>
> > > > Agora, imagine que eu quero um datagrid diferente. Quero associar a
> > > > uma ÚNICA COLUNA MAIS DE UM CAMPO do meu dataprovider.
>
> > > > Porque isso? Pq eu quero no mesmo campo, mostrar vários dados dipostos
> > > > em linhas. Talvez alguém esteja se perguntando: Porque você não cria
> > > > mais colunas e mostra esses dados nas colunas? Porque eu não tenho
> > > > espaço na largura, mas na altura tenho espaço sobrando.
>
> > > > Então, no link que você postou a idéia é usar outro datagrid como
> > > > itemrenderer, neste caso não é exatamente o que eu quero pois se eu
> > > > colocar ali outro grid cada linha será um item diferente. Eu quero
> > > > mostrar dados DO MESMO ITEM.
>
> > > > Resumindo, de alguma forma eu tenho que bolar uma maneira de na mesma
> > > > coluna do datagrid eu mostrar dados de mais de um campo.
>
> > > > Como eu ainda não comecei a implementar, ainda não tenho muitas
> > > > idéias... estou a procura de sugestões.
>
> > > > Ficou mais claro?
>
> > > > Eu fiz um print da imagem
>
> > > >http://yfrog.com/0yexemplogg
>
> > > > Olha como em uma vizualização a coluna só mostra um campo.
> > > > Em outra vizualização ela mostra 3 campos.
>
> > > > Depois de escrever tudo isso, pensei no seguinte: No meu model
> > > > ( ArrayCollection ) eu crio um outro campo "virtual". Esse campo não
> > > > pertence a tabela do banco de dados, é um campo que eu vou criar
> > > > dentro do Flex após receber os items do banco. Esse novo campo vai ser
> > > > a concatenação dos campos que eu quero mostrar. Acho que dá certo.
>
> > > > Se não tiver alguma forma melhor de fazer, vai ser assim.
--~--~---------~--~----~------------~-------~--~----~
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