I'd advise using XMLListCollection.  You can manipulate e4x XML any way
you want.  

 

I did an example for a checkBox renderer, where the dataProvider XML did
not have a property in which to store the "selected" state of the
checkbox.  Using XML, I just added that attribute dynamically.

 

Tracy

 

________________________________

From: [email protected] [mailto:[EMAIL PROTECTED] On
Behalf Of michrx7
Sent: Sunday, November 26, 2006 9:59 PM
To: [email protected]
Subject: [flexcoders] Adding dynamic fields to an ArrayCollection

 

Using the code below I am able to create an array collection and set 
it as the provider of a datagrid (the resort the columns to match 
the way I want them to display). 

Now I have two issues I need to solve if anyone is able to help: 

1) I have of defined static arrays (mynewArray1 - 3) to add to the 
array collection and I need these to be dynamic (mynewArray[0] - n)

2) When I use myArrayCol.addItem({Name:...) I need to build this 
dynamically since the field names will be dynamic. I'd like to use 
the mycolNames array instead. As an example myArrayCol.addItem
({mycolNames[0]:mynewArray[n][z]}

Here is the code:

___________________________________________________
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml
<http://www.adobe.com/2006/mxml> " 
layout="absolute" creationComplete="initArray();">

<mx:Script>
<![CDATA[
import mx.controls.dataGridClasses.DataGridColumn;
import mx.controls.DataGrid;
import mx.collections.ArrayCollection;
import mx.controls.Alert;

[Bindable] public var myArrayCol:ArrayCollection = new 
ArrayCollection();

public function initArray():void {
var mycolNames:Array = ["Name", "Count", "TFBool"];
var mynewArray1:Array = ["Fred", "Ed", "Jack"];
var mynewArray2:Array = [1, 2, 3];
var mynewArray3:Array = [false, true, false];

for (var z:int = 0; z<3; z++) {
myArrayCol.addItem({Name:mynewArray1[z], Count:mynewArray2[z], 
TFBool:mynewArray3[z]});
}

myDG.dataProvider = myArrayCol;

for (var y:int = 0; y < myDG.columns.length; y++) {
myDG.columns[y].dataField = mycolNames[y];
}

}
]]>
</mx:Script>

<mx:DataGrid id="myDG" x="10" y="10" width="599" height="269"/>

</mx:Application>
___________________________________________________

I hope I'm being clear... I need to add an unknown number of columns 
to the ArrayCollection so I can't manually define it in the mxml. 
I'll be looping through a set of user choices and building the array 
collection based on those choices.

Please help!

 

Reply via email to