[Flex]Rodapé em DataGrid

5 respostas
0

Boa tarde pessoal,

Seguinte, tenho essa grid ó:

E gostaria de por um rodapé estilo esse:

Para popular a grid, faço da seguinte maneira:

Tenho um ArrayCollection que é o dataProvider da grid, então faço uma query que retorna uma lista e jogo para o dataProvider…(Se quiserem, posto o código da Datagrid)

Eu até tentei inserir no último registro da lista as informações que vão no rodapé e deixar em negrito, mas o resultado não fica dos melhores…

Queria algo parecido com a segunda grid…alguma sugestão?

Acho que é isso, fico no aguardo.

5 Respostas

renzonuccitelli

Veja sobre o AdvancedDataGrid. Ele não aprensenta os dados como rodapé, vc os agrupa e coloca totais. Vc também poderia fazer isso customizando o itemRenderer.

renzonuccitelli
Toma aí um código de exemplo que fiz para um curso de flex:
<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
					   xmlns:s="library://ns.adobe.com/flex/spark"
					   xmlns:mx="library://ns.adobe.com/flex/mx"
					   minWidth="955"
					   minHeight="600"
					   creationComplete="application1_creationCompleteHandler(event)">
	<s:layout>
		<s:VerticalLayout/>
	</s:layout>
	<fx:Script>
		<![CDATA[
			import mx.collections.ArrayCollection;
			import mx.collections.Grouping;
			import mx.collections.GroupingCollection2;
			import mx.collections.GroupingField;
			import mx.collections.SummaryField2;
			import mx.collections.SummaryObject;
			import mx.collections.SummaryRow;
			import mx.events.FlexEvent;
			import mx.utils.ObjectUtil;
			[Bindable]
			public var collection:ArrayCollection=new ArrayCollection([{ loja:"Centro",vendedor:"Renzo",valor:12.22,estimativa:10 },{ loja:"Centro",vendedor:"Edinei",valor:12.22,estimativa:10 },{ loja:"Centro",
					vendedor:"Renzo",valor:11.22,estimativa:9 }]);
			[Bindable]
			public var groupCollection:GroupingCollection2;

			protected function application1_creationCompleteHandler(event:FlexEvent):void {
				var groupping:Grouping=new Grouping;
				var groupingField:GroupingField=new GroupingField("vendedor");
				var summaryRow:SummaryRow=new SummaryRow;
				summaryRow.summaryPlacement="group";
				var summaryField:SummaryField2=new SummaryField2("valor");
				summaryField.label="soma";
				summaryRow.fields=[ summaryField ];
				groupingField.summaries=[ summaryRow ];
				groupping.fields=[ groupingField ];
				groupCollection=new GroupingCollection2
				groupCollection.grouping=groupping;
				groupCollection.source=collection;
				groupCollection.refresh();
			}

			private function objFunc():SummaryObject {
				var obj:SummaryObject=new SummaryObject();
				obj.summary=true;
				return obj;
			}

			private function labelFun(obj:Object):String {
				trace(ObjectUtil.toString(obj));
				return "label";
			}
		]]>
	</fx:Script>
	<fx:Declarations>
		<!-- Place non-visual elements (e.g., services, value objects) here -->
	</fx:Declarations>
	<mx:AdvancedDataGrid dataProvider="{collection}">
		<mx:groupedColumns>
			<mx:AdvancedDataGridColumn headerText="Loja" dataField="loja"/>
			<mx:AdvancedDataGridColumn headerText="Vendedor" dataField="vendedor"/>
			<mx:AdvancedDataGridColumnGroup headerText="Vendas">
				<mx:AdvancedDataGridColumn headerText="Valor" dataField="valor"/>
				<mx:AdvancedDataGridColumn headerText="Estimativa" dataField="estimativa"/>
			</mx:AdvancedDataGridColumnGroup>
		</mx:groupedColumns>
	</mx:AdvancedDataGrid>
	<mx:AdvancedDataGrid dataProvider="{groupCollection}">
		<mx:columns>
			<mx:AdvancedDataGridColumn headerText="Loja" dataField="loja"/>
			<mx:AdvancedDataGridColumn headerText="Valor" dataField="valor"/>
			<mx:AdvancedDataGridColumn headerText="Estimativa" dataField="estimativa"/>
			<mx:AdvancedDataGridColumn headerText="Soma de Vendas" dataField="soma"/>
		</mx:columns>
	</mx:AdvancedDataGrid>
</s:WindowedApplication>

No segundo grid ele agrupa o total de vendas na última coluna.
Se for rodar em Flex, troque o WindowedApplication para Application.

[]s

Hebert_Coelho

Cara, não saco nada de Flex não. Só fiz um hello world até hoje.

Tipo, vc não teria como colocar um label ao final de cada coluna da grid não? Uma vez que a coluna tenha tamanho fixo, basta vc colocar seu label lá e alterar o valor.

Nesse caso, a conta final vc faria na sua classe java e passaria já mastigado para o flex. q tal?

0

Valeu pessoal…

Vou testar aqui e retorno quando terminar, vai demorar um pouco…

Valeu!

A

Esta semana eu estava com a mesma necessidade e encontrei isso http://code.seanhess.net/?p=17
Com alguns ajustes fica melhor ainda.
flw

Criado 14 de setembro de 2010
Ultima resposta 15 de set. de 2010
Respostas 5
Participantes 4