Criando colunas dinamicamente no Datarid
Hi friends,
Neste post eu quero mostrar uma forma que eu utilizei para criar colunas para o meu DataGrid de forma dinâmica.
Eu abitolado em HTML procedia de forma simples para cria minhas colunas e linhas, nada que um “for” ou “While” bem colocado no HTML não resolvesse, mais na orientação a objetos o negocio é um pouco mais complexo.
A classe DataGrid disponibiliza uma propriedade chamada “Columns” que nada mais que uma função (corrigindo “Metodo”), este por sua vez recebe um argumento do tipo Array, desta forma é cria um array com o nome das colunas e VOA – lÁ!! ”ERRADO”…
Não é só porque o tipo do argumento é Array que ele tem que aceitar um SIMPLES Array… ta ligado! Você vai precisar de um Array cujo o elemento instancie a classe “DataGridColmn”. Segue um exemplo chinfrinha (simplesinho):
<?xml version=”1.0″ encoding=”utf-8″?>
<mx:Application xmlns:mx=”http://www.adobe.com/2006/mxml”
layout=”absolute” creationComplete=”init();”>
<mx:Script>
<![CDATA[
import mx.controls.dataGridClasses.DataGridColumn;
import mx.controls.DataGrid;
private var objDataGrid:DataGrid;
public function init():void{
numColumn.addEventListener(Event.CHANGE,HandlerNumColumn);
// Criando dataGrid //
this.objDataGrid = new DataGrid();
this.objDataGrid.percentWidth = 50;
this.objDataGrid.percentHeight = 50;
this.addChild(objDataGrid);
}
private function HandlerNumColumn(evento:Event):void{
// Cria colunas //
var colunas:uint = uint(evento.currentTarget.text);
var arrayColunas:Array = new Array;
for(var i:uint = 1; i<= colunas; i++ ){
arrayColunas.push(new DataGridColumn("coluna"+i));
}
this.objDataGrid.columns = arrayColunas;
}
]]>
</mx:Script>
<mx:TextInputfont-size: 10pt; font-family: “Courier New”; color: rgb(153, 0, 0);”>numColumn” x=”658″ y=”20″/>
</mx:Application>
Espero que tenha ajudado!!!