You may want to take a look at the following where the setter function is overridden to maintain sorting (which may help with the row height issue).
http://www.returnundefined.com/2006/10/item-renderers-in-datagrids-a-primer-for-predictable-behavior/ Jeff --- In [email protected], "pasflex" <[EMAIL PROTECTED]> wrote: > > We have a datagrid that is using an item renderer that consists of an > HBox implementing IDropInListItemRenderer with a few components in > it. One of these components is a Text component used so some text > can be wrapped. > > The problem is there are a few cases were the datagrid does not seem > to size the cell properly to the item renderer. The easiest case to > demonstrate is sorting the datagrid. The datagrid renders fine when > first loaded but if a column is sorted the row heights no longer are > variable, they are all the same height. Is there something else that > needs to be in the item renderer? > > Here's some simplified code that demonstrates the problem (run it, > then sort the columns to see the issue): > > <?xml version="1.0" encoding="utf-8"?> > <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"> > <mx:Script> > <![CDATA[ > import mx.collections.ArrayCollection; > > [Bindable] > private var dataSet:ArrayCollection = new > ArrayCollection([{item:1, text:"Some text"}, > {item:2, text:"Some > really long text that should wrap."}]); > ]]> > </mx:Script> > <mx:DataGrid dataProvider="{dataSet}" > variableRowHeight="true" width="200"> > <mx:columns> > <mx:DataGridColumn dataField="item"/> > <mx:DataGridColumn dataField="text" > itemRenderer="MyRenderer"/> > </mx:columns> > </mx:DataGrid> > </mx:Application> > > <?xml version="1.0" encoding="utf-8"?> > <mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml" > > implements="mx.controls.listClasses.IDropInListItemRenderer" > > <mx:Text id="myText" width="100%"/> > <mx:Script> > <![CDATA[ > import > mx.controls.dataGridClasses.DataGridListData; > import mx.controls.listClasses.BaseListData; > import mx.events.FlexEvent; > > [Bindable("dataChange")] > > private var _listData:BaseListData; > > public function get listData():BaseListData > { > return _listData; > } > > public function set listData > (value:BaseListData):void > { > _listData = value; > dispatchEvent(new FlexEvent > (FlexEvent.DATA_CHANGE)); > } > > override protected function updateDisplayList > (w:Number, h:Number):void > { > super.updateDisplayList(w, h); > if (data != null ) > { > var ld:DataGridListData = > DataGridListData(_listData); > myText.text = ld.label; > > } > } > > ]]> > </mx:Script> > </mx:HBox> >

