Arian Pasquali

making it run

Posts Tagged ‘components

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 at 12:34 am

Publicado em flex

Tagged with ,