I would store the CB's DP somewhere so you can get at it w/o creating an
editor.

 

________________________________

From: [email protected] [mailto:[EMAIL PROTECTED] On
Behalf Of j_lentzz
Sent: Monday, November 12, 2007 6:56 AM
To: [email protected]
Subject: [flexcoders] Custom itemRenderer using Label Question

 

Hi,

I'm using the following code to set the data of an extended Label
being used as an itemRenderer in a datagrid. The editor for the cell
is a combobox. What I'm doing is taking the data value sent down for
that cell (a number), looking it up in the dataprovider of the
combobox and displaying the corresponding label in my custom Label
widget. What I'm wondering is if this is the best way to do it. In
particular, the part that concerns me is that I'm creating an instance
of the combobox editor to get the dataprovider collection to search. 
Any thoughts would be greatly appreciated. Thanks, John

override public function set data(value:Object):void {
super.data = value;

var cbr:ComboBoxRenderer; // will contain renderer for this cell
var dg:DataGrid; // reference to grid containing this cell
var dp:ArrayCollection; // dataProvider of selected cell's comboBox

if (listData != null) { 
dg = DataGrid(listData.owner);

cbr = dg.columns[listData.columnIndex].itemEditor.newInstance();
dp = cbr.dataProvider as ArrayCollection;
// now iterate through dp to find a matching data value, when
found put its label in the Label widget 
var dpLen:int = dp.length;
for (var j:int=0; j<dpLen; j++) {
if (dp.getItemAt(j).data ==
data[DataGridListData(listData).dataField]) { // found match
this.text = dp.getItemAt(j).label; // + " " + dp.getItemAt(j).data;
trace('found LabelWithDownArrow');
return;
}
}
// not found, so show comboBox prompt
this.text = cbr.prompt;
}
}

 

Reply via email to