View Full Version : How to apply formatting on data feeding AdvancedDataGrid

05-19-2011, 08:59 PM
Hello All,

I'm using the Halo AdvancedDataGrid component, in which the default itemEditor for each column is mx.controls.TextInput.

For example, the data provider is:

private var labelsGridArray:Array = [ { tag:"apple" }, { tag:"*banana" }, { tag:"carrot" } ];
And the AdvancedDataGrid definition is:

<mx:AdvancedDataGrid x="115" y="288" id="labelsGrid" designViewDataType="flat" dataProvider="{labelsGridArray}">

If a String from the dataprovider Array is preceded by an asterisk - as is the case for banana in this example - the String needs to be surrounded by square brackets and be displayed in a grey colour.

I tried to do the following:

override public function set data(value:Object):void

But this code was never executed. I put breakpoints and they were never accessed, and trace statements that were never written.

A colleague told me about using the AdvancedDataGridColumn's labelFunction attribute. I tried that but was unable to do the following assignment (the id of the column is 'tag'):

tag.itemEditor.htmlText = formattedText;

I get error "Access of possibly undefined property htmlText through a reference with static type mx.core:IFactory.

I tried to both explicitly extract the TextInput itemEditor (like I did for the override set data) AND use the labelFunction, but I couldn't get both to be in the correct scopes.

Your help is much appreciated,

05-19-2011, 09:14 PM
Well, making use of the labelFunction is definitely the way to go. But it's not clear from your post how you are using it.

Please post the mxml code for your data grid and the labelFunction you're written.

05-19-2011, 09:23 PM
Hi John,

Thanks for your quick reply. As requested, here is my AdvancedDataGrid definition in whole. I've not written the code yet for the labelFunction because I'm still having trouble putting everything in the proper scopes.

<mx:AdvancedDataGrid x="115" y="288" id="labelsGrid" designViewDataType="flat" dataProvider="{labelsGridArray}">
<mx:AdvancedDataGridColumn id="tag" headerText="Tag" dataField="tag" width="90" labelFunction="tag_labelFunction">
<mx:TextInput id="ti"/>
import mx.controls.advancedDataGridClasses.AdvancedDataGridColumn;

protected function tag_labelFunction( item:Object, column:AdvancedDataGridColumn ):void
var formattedText:String = "";

tag.ti.htmlText = formattedText;

The statement
tag.ti.htmlText = formattedText;
generates the following error:
Access of possibly undefined property ti through a reference with static type mx.controls.advancedDataGridClasses.AdvancedDataGridColumn

I've tried moving the function definition within the Hbox, but then the AdvancedDataGridColumn can't access it.