Arian Pasquali

making it run

AdvancedDataGrid with contained DataGrid

with one comment

Essa semana nos deparamos com a necessidade de apresentar uma entidade hierarquica em forma de tabela.
Até aí tudo bem, o problema é que os itens filhos deveriam mostrar colunas diferentes do pai.

advanceddatagrid_with_contained_datagrid3

Eu sabia que era possível fazer com AdvancedDatagrid no Flex 3 sem apelar para gambiarras. Foi quando descobri os rendererProviders e  do AdvancedDatagrid.
Os rendererProviders do AdvancedDatagrid permitem customizações bem avançadas.
No meu caso eu precisava renderizar um outro Datagrid no nível filho.
A documentação do AdvancedDatagrid não detalha bem esse recurso ficando apenas nos exemplos de gráficos dentro dos grids.

Encontrei um post no Flex Cookbook com um exemplo prático do Dean Pittsinger.
http://www.riamaven.com/FlexSolutions/ADGwithContainedDGDemo.html

O código é realmente muito simples, mais do que eu esperava encontrar.  No AdvancedDatagrid principal define-se um AdvancedDataGridRendererProvider em rendererProviders.

 <mx:rendererProviders>
    <mx:AdvancedDataGridRendererProvider depth="2" columnIndex="1"
                                         renderer="SubDataGrid"
                                         columnSpan="0" />

 </mx:rendererProviders>

No atributo renderer define-se a classe a ser renderizada, nesse exemplo a classe criada se chama  SubDataGrid e extende de AdvancedDatagrid. O único segredo está em fazer override do método “set data”.

   <mx:Script>
     <![CDATA[
         import mx.controls.Alert;            

        override public function set data(value:Object):void
        {
           // set dataProvider
           dataProvider = value.service;

           // If using the array data source, use this instead:
           // dataProvider = value;

           // adjust rowCount
           this.rowCount = dataProvider.length + 1;
        }

     ]]>
   </mx:Script>

Normalmente não é algo que eu aconselharia, deve ser usado com moderação e como última alternativa pra não prejudicar demais a usabilidade e a focalidade das informações.

Flex Cookbook: http://www.adobe.com/cfusion/communityengine/index.cfm?event=showdetails&postId=12326&productId=2

Written by arianpasquali

maio 7, 2009 às 12:34 am

Publicado em flex

Tagged with ,

Uma resposta

Subscribe to comments with RSS.

  1. Muito bom. Também não sabia desse recurso do ADG.
    Um abraço.

    Mário Júnior

    maio 7, 2009 at 12:32 pm


Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: