[flexcoders] Dynamically Generating Column Attributes for a Data Grid

2008-01-21 Thread Dominic Pazula
I tried to search for this but got a server busy error.  I figured 
I would go ahead and post it.  I appologize if this has been covered 
before.

I'm trying to dynamically generate columns for my datagrid.  I don't 
have prior knowledge of the column attributes before receiving the 
data.  I get two ArrayCollection objects, one with the data (gridData)
and one with the metadata about the columns (called columnData from 
here on).

Here is the function I am trying to write:
public function updateGridData():void{
var column:DataGridColumn;
var headers:String = new String();

for (var i:int =0; icolumnData.length; i++){
column  = new DataGridColumn(columnData[i].name);
//column.dataField = columnData.name;
column.headerText = getheaderText(columnData[i]);
//headers = headers + getheaderText(columnData[i]) + , ;
dGrid.columns.push(column);
}
dGrid.dataProvider = gridData;
//mx.controls.Alert.show(Updated the DataGrid.  Headers SHOULD be:  
+ headers);
}

The getheaderText() function returns the header text value based on 
a user selection (description or name).

What am I doing wrong here?

Thanks
Dominic



RE: [flexcoders] Dynamically Generating Column Attributes for a Data Grid

2008-01-21 Thread Sebastian Zarzycki
But what result you get? Make sure that data are already there (gridData and
columnData are filled with values) when you launch this method.
I would fix the code with the following :

var headers:String = new String();
var newColumns:Array = new Array();

// flex loops are generally done this way (see
http://livedocs.adobe.com/flex/2/docs/wwhelp/wwhimpl/common/html/wwhelp.htm?
context=LiveDocs_Partsfile=1831.html)  
var i:int;
for (i = 0; icolumnData.length; i++) {
var column:DataGridColumn = new DataGridColumn(columnData[i].name);
column.dataField = columnData[i].name; // there wasn't [i] index here
column.headerText = getheaderText(columnData[i]); // aren't you setting
name/header in constructor?
//headers = headers + getheaderText(columnData[i]) + , ; // what is
this for?
newColumns.push(column);
}

dGrid.dataProvider = gridData;
dGrid.columns = newColumns; // it's better to assign at the end, to avoid
datagrid invalidations on every column added.




-Original Message-
From: flexcoders@yahoogroups.com [mailto:[EMAIL PROTECTED] On
Behalf Of Dominic Pazula
Sent: Monday, January 21, 2008 9:04 PM
To: flexcoders@yahoogroups.com
Subject: [flexcoders] Dynamically Generating Column Attributes for a Data
Grid

I tried to search for this but got a server busy error.  I figured 
I would go ahead and post it.  I appologize if this has been covered 
before.

I'm trying to dynamically generate columns for my datagrid.  I don't 
have prior knowledge of the column attributes before receiving the 
data.  I get two ArrayCollection objects, one with the data (gridData)
and one with the metadata about the columns (called columnData from 
here on).

Here is the function I am trying to write:
public function updateGridData():void{
var column:DataGridColumn;
var headers:String = new String();

for (var i:int =0; icolumnData.length; i++){
column  = new DataGridColumn(columnData[i].name);
//column.dataField = columnData.name;
column.headerText = getheaderText(columnData[i]);
//headers = headers + getheaderText(columnData[i]) + , ;
dGrid.columns.push(column);
}
dGrid.dataProvider = gridData;
//mx.controls.Alert.show(Updated the DataGrid.  Headers SHOULD be:  
+ headers);
}

The getheaderText() function returns the header text value based on 
a user selection (description or name).

What am I doing wrong here?

Thanks
Dominic



--
Flexcoders Mailing List
FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt
Search Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.com 
Yahoo! Groups Links