logo
  • Home
  • Acerca
  • Autores
  • Faq
  • Rede
  Twitter   Feed-me! RSS!

Agrupando e desagrupando dados na AdvancedDataGrid

Colocado por Leonardo França na(s) categoria(s): 1, 4, 6, action, Actionscript, Actionscript 3.0, Actionscript3, Adobe, api, app, AR, back, bar, BI, Bindable, camp, checkBox, class, classe, collection, control, dados, DataGrid, DataProvider, demo, DRE, english, err, event, EventListener, Evento, exemplo, Exemplos, Flex, for, function, gc, handle, html, ide, IE, if, image, int, Java, Javascript, label, layout, lite, live, Mate, mg, MXML, NaN, O, on, override, PHP, pt, referencia, refresh, RIA, Ria’s Geral, servidor, tag, UI, Ved, XML em 04 7th, 2010 | Sem comentários



Precisei implementar uma AdvancedDataGrid em uma funcionalidade que hora ordenava os dados pela primeira letra, hora não. Em primeiro momento achei que fosse bem complicado, já que tinha feito algo semelhante em outro projeto onde deveria agrupar por exemplos hora os servidores, hora as instancias dos servidores.
Ao olhar esse projeto antigo, achei que estava muito complicado e de dificil entendimento, voltei ao livedocs para estudar um pouco mais.
Usei o exemplo basico da Adobe e com algumas adaptações, vi que o que eu queria fazer era mais simples do que imaginava.
Tenho uma camada de dados simples para demonstração, e de inicio, alimento minha grid com ela.

PLAIN TEXT
ACTIONSCRIPT3:

  1. [Bindable]
  2.  private var dpFlat:ArrayCollection = new ArrayCollection([
  3.  {Region:"Southwest", Territory:"Arizona",
  4.      Territory_Rep:"Barbara Jennings", Actual:38865, Estimate:40000},
  5.  {Region:"Southwest", Territory:"Arizona",
  6.      Territory_Rep:"Dana Binn", Actual:29885, Estimate:30000},  
  7.  {Region:"Southwest", Territory:"Central California",
  8.      Territory_Rep:"Joe Smith", Actual:29134, Estimate:30000},  
  9.  {Region:"Southwest", Territory:"Nevada",
  10.      Territory_Rep:"Bethany Pittman", Actual:52888, Estimate:45000},  
  11.  {Region:"Southwest", Territory:"Northern California",
  12.      Territory_Rep:"Lauren Ipsum", Actual:38805, Estimate:40000},
  13.  {Region:"Southwest", Territory:"Northern California",
  14.      Territory_Rep:"T.R. Smith", Actual:55498, Estimate:40000},  
  15.  {Region:"Southwest", Territory:"Southern California",
  16.      Territory_Rep:"Alice Treu", Actual:44985, Estimate:45000},
  17.  {Region:"Southwest", Territory:"Southern California",
  18.      Territory_Rep:"Jane Grove", Actual:44913, Estimate:45000}
  19.             ]);

Um CheckBox foi adicionando um listener para me dizer quando ele esta selecionado ou não.

PLAIN TEXT
MXML:

  1. <mx:CheckBox id="ckGroup" label="Checkbox"/>

Minha função que trata o evento do CheckBox fará o trabalho de agrupar e desagrupar os dados.

PLAIN TEXT
ACTIONSCRIPT:

  1. private function handlerCheck(evt:Event):void
  2. {
  3.     if(ckGroup.selected)
  4.         {
  5.         trace("selected");
  6.         gc.source = dpFlat;
  7.         gc.refresh();
  8.         hView = new HierarchicalCollectionView(gc);
  9.         myADG.dataProvider = hView;
  10.     }
  11.     else
  12.         {
  13.         trace("no selected");
  14.         myADG.dataProvider = dpFlat;
  15.     }
  16.  }

Estou usando a classe GroupCollection que é responsavel por agrupar meus dados por um determinado campo para ser mostrado na AdvancedDataGrid.

PLAIN TEXT
MXML:

  1. <mx:GroupingCollection id="gc" source="{dpFlat}">
  2.         <mx:grouping>
  3.             <mx:Grouping>
  4.        <!–         <mx:GroupingField name="Region"/>–>
  5.                 <mx:GroupingField name="Territory"/>
  6.             </mx:Grouping>
  7.         </mx:grouping>
  8.     </mx:GroupingCollection>

Passando depois para a HierarchicalCollectionView que fornece uma visão hierárquica dos meus dados.

PLAIN TEXT
ACTIONSCRIPT:

  1. gc.source = dpFlat;
  2. gc.refresh();
  3. hView = new HierarchicalCollectionView(gc);
  4. myADG.dataProvider = hView;

O exemplo completo:

PLAIN TEXT
MXML:

  1. <?xml version="1.0"?>
  2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
  3.     <mx:Script>
  4.        <![CDATA[
  5.             import mx.collections.HierarchicalCollectionView;
  6.            import mx.collections.ArrayCollection;
  7.                  
  8.            [Bindable]
  9.            private var dpFlat:ArrayCollection = new ArrayCollection([
  10.              {Region:"Southwest", Territory:"Arizona",
  11.                  Territory_Rep:"Barbara Jennings", Actual:38865, Estimate:40000},
  12.              {Region:"Southwest", Territory:"Arizona",
  13.                  Territory_Rep:"Dana Binn", Actual:29885, Estimate:30000},  
  14.              {Region:"Southwest", Territory:"Central California",
  15.                  Territory_Rep:"Joe Smith", Actual:29134, Estimate:30000},  
  16.              {Region:"Southwest", Territory:"Nevada",
  17.                  Territory_Rep:"Bethany Pittman", Actual:52888, Estimate:45000},  
  18.              {Region:"Southwest", Territory:"Northern California",
  19.                  Territory_Rep:"Lauren Ipsum", Actual:38805, Estimate:40000},
  20.              {Region:"Southwest", Territory:"Northern California",
  21.                  Territory_Rep:"T.R. Smith", Actual:55498, Estimate:40000},  
  22.              {Region:"Southwest", Territory:"Southern California",
  23.                  Territory_Rep:"Alice Treu", Actual:44985, Estimate:45000},
  24.              {Region:"Southwest", Territory:"Southern California",
  25.                  Territory_Rep:"Jane Grove", Actual:44913, Estimate:45000}
  26.            ]);
  27.            private var hView:HierarchicalCollectionView;
  28.            
  29.            override protected function childrenCreated():void
  30.            {
  31.                 super.childrenCreated();
  32.                 ckGroup.addEventListener(Event.CHANGE,handlerCheck);
  33.                 myADG.dataProvider = dpFlat;
  34.            }
  35.            
  36.            private function handlerCheck(evt:Event):void
  37.            {
  38.                 if(ckGroup.selected)
  39.                 {
  40.                     trace("selected");
  41.                     gc.source = dpFlat;
  42.                     gc.refresh();
  43.                     hView = new HierarchicalCollectionView(gc);
  44.                     myADG.dataProvider = hView;
  45.                 }
  46.                 else
  47.                 {
  48.                     trace("no selected");
  49.                     myADG.dataProvider = dpFlat;
  50.                 }
  51.            }
  52.        ]]>
  53.    </mx:Script>
  54.     <mx:GroupingCollection id="gc" source="{dpFlat}">
  55.         <mx:grouping>
  56.             <mx:Grouping>
  57.        <!–         <mx:GroupingField name="Region"/>–>
  58.                 <mx:GroupingField name="Territory"/>
  59.             </mx:Grouping>
  60.         </mx:grouping>
  61.     </mx:GroupingCollection>
  62.     <mx:Panel title="AdvancedDataGrid Control Example" height="75%" width="75%" layout="horizontal" paddingTop="10" paddingBottom="10" paddingLeft="10" paddingRight="10">
  63.         <mx:AdvancedDataGrid id="myADG" width="100%" height="100%" initialize="gc.refresh();">        
  64.             <mx:columns>
  65.                 <!–<mx:AdvancedDataGridColumn dataField="Region"/>–>
  66.                 <mx:AdvancedDataGridColumn dataField="Territory"/>
  67.                 <mx:AdvancedDataGridColumn dataField="Territory_Rep" headerText="Territory Rep"/>
  68.                 <mx:AdvancedDataGridColumn dataField="Actual"/>
  69.                 <mx:AdvancedDataGridColumn dataField="Estimate"/>
  70.             </mx:columns>
  71.        </mx:AdvancedDataGrid>
  72.         <mx:ControlBar>
  73.             <mx:CheckBox id="ckGroup" label="Checkbox"/>
  74.         </mx:ControlBar>
  75.     </mx:Panel>
  76. </mx:Application>

referencias:
http://livedocs.adobe.com/flex/3/html/help.html?content=advdatagrid_06.html

Translations:
English Version



Veja o post original no blog do autor aqui!  

Leonardo França

Escrito por Leonardo França @ http://www.leonardofranca.com.br
Saiba mais sobre o autor na sua pagina de perfil
Outros posts do autor:
» Usando banco de dados local com Adobe AIR
» Flash Camp Brasil
» As novidades do Adobe AIR 2.6

Deixe um comentário



Spam Protection by WP-SpamFree

ACERCA

O que é o RedeRIA ?

O redeRIA não é nada mais que um agregador de feed's que disponibiliza o conteudo de varios blogs e autores ao redor do mundo RIA, actualmente agregamos mais de 2790 entradas vindas de 53 blogs especializados em ria’s, pelo que só fica a ganhar em assinar o feed ou seguir a comunidade no twitter.

Se acha que o seu blog ou um blog de um amigo é interessante e util para os leitores o redeRIA, faça a sua submissão aqui.

Feed: assine já
Twitter: siga-nos

GOOGLE

Votação


Deveria o RedeRia agregar conteúdo em inglês?
Ver Resultados

AUTORES


Eduardo KrausAlexandre TadashiBindableCognitiva SoluçõesDaniel LopesDaniel SchmitzDanielPedrinhaDClick TeamEbercomEdgard DavidsonElvis FernandesErko BrideeFabiel PrestesFábio Batista da SilvaFabio da SilvaFabriccio BernardesFelipe BorellaFlavia MoreiraGabriel VersalliniGabriela T. PerryIgor MusardoJanderson CardosoJoão AugustoJose Carlos FielKelps SousaLeonardo FrançaLucas MarçalLuis MessiasLuiz TarabalMario JuniorMário SantosMauro MartinsPablo SouzaPedro ClaudioreneRia BrazilriaPTRicardo CerqueiraRobson FernandesRodrigo Pereira FragaSaintBrSamuelFacchinelloSergio SouzaSilva DeveloperStefan HorochovecTech CaffeTecinforThiago BuenoVedVinícius SandimWillian ManoXAML Cast

PUBLICIDADE








Powered by Wordpress & msdevstudio.com