Dúvida datagrid flex dinâmico

olá pessoal.
sei que um datagrid pode adaptar-se ao seu dataprovider.
o que tenho é o seguinte:
um XMLList que serve de provider para pelo menos 13 gráficos.
o que acontece é que eu trago os dados ordenados nesse XMLLIst e necessito que o mesmo monte o datagrid nessa ordem
acontece que seria muito trabalhoso remontar o retorno e também todos os outros gráficos.
segue aí uma parte do list

RS 2 4 289 100 10 405 DF 2 2

ele vem exatamente dessa forma
e necessito que o grid fique assim:

UF jan fev marc etc total
Rs 0 1 2 3
BA 12 4 0 16
etc
total 12 5 2 19

acontece que os meses podem vir ordenados corretamente ou não.
para cada estado terá os meses e por fim um total por linha e por coluna.
como eu posso fazer para montar o grid conforme vier meu provider?
devo mexer no provider criando um arraycollection por exemplo da forma que necessito?
como posso fazer isto? estou achando complicado galera e nao estou conseguindo resolver. deve ser fácil mas não vejo solução
abraço

alguém? :frowning:

Não entendi muito bem a sua dúvida, mas a principio para criar um datagrid dinâmico, tu linka o atributo “dataProvider” do dataGrid a um ArrayCollection, por exemplo, e nas colunas existe um atributo chamado “dataField” que tu ira colocar o atributo do objeto iterado.

<mx:DataGrid id="dgPessoa" dataProvider="{listPessoa}">
		<mx:columns>
			<mx:DataGridColumn dataField="nome"  />
		</mx:columns>	
</mx:DataGrid>

Algo mais ou menos assim

os datagrids do flex se adequam ao dataprovider.
se for usado dessa forma não é necessário que se sete as colunas estaticamente.
abraço

Pelo que eu entendi, você queria criar as colunas dinamicamente?

Tipo, a quantidade de coluna não é fixo, seria isso?

Se for, ja fiz algo parecido, só confirma ai que depois eu posto, valeu.

SIm seria criar dinamicamente.
não é necessário criar as colunas no datagrid se meu provider estiver correto.
se voce puder poste aí sua solução para mim comparar e etc.
abraço

Meu caso é o seguinte, tenho uma categoria, e cada um deles tem um período de distribuição…

Por exemplo:

 Descrição         | 01/2010 | 02/2010 | 03/2010 |

1 - Infra-Estrutura | 250,00 | 300,00 | 100,00 |

Não ficou das melhores coisas(Depois vou tentar algo diferente), mas ai vai…:

Grid:

<mx:DataGrid id="grid" width="100%" dataProvider="{this.model.listaDadosCategoria}">
	<mx:columns>
		<mx:DataGridColumn width="250" dataField="label" headerText="Categoria" />
	</mx:columns>	
</mx:DataGrid>

Controller:

private function popularGrid(): void {
			
	var aux: int = 0;
	var totalCategorias: Number = 0;
	var columnList: Array = view.grid.columns;
			
	this.model.listaDadosCategoria.removeAll();                //Dataprovider
	this.view.vboxPlanoInvestimentos.removeAllChildren();
					
	for each ( var c: CategoriaDTO in this.model.listaCategorias ) {
				
		var linha: Object = new Object();
				
		linha['label'] = c.label;
		for each ( var d: CategoriaDistribuicaoDTO in c.listaCategoriaDistribuicao ) {
					
			if (aux == 0) {
				var column: DataGridColumn = new DataGridColumn();
				column.headerText = view.formatDate(d.dtDistribuicao);
				column.dataField = 'valor' + d.nrDistribuicao;
				column.labelFunction = view.formatNumber;
				columnList.push(column);
			}
			linha['valor' + d.nrDistribuicao] = d.valorDistribuicao;							
		}
		this.model.listaDadosCategoria.addItem(linha);				
		aux++;
	}
	view.grid.columns = columnList;
}