Owner doesn't get set until DG.commitProperties, I think
________________________________ From: flexcoders@yahoogroups.com [mailto:[EMAIL PROTECTED] On Behalf Of Sefi Ninio Sent: Sunday, August 24, 2008 2:14 AM To: flexcoders@yahoogroups.com Subject: Re: [flexcoders] Re: DataGridColumn trouble... @Tim: Yeah, that's exactly what I ended up implementing.. I was just puzzled, that's all really... :) @Alex: Hmm... I tried to use the owner property without subclassing the DataGridColumn with no success... Maybe I'll try that. Thanks a lot for all the responses! Sefi On Sun, Aug 24, 2008 at 5:56 AM, Alex Harui <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> > wrote: Note that, if you subclass the DataGrid and add your labelFunctions to the subclass, then the this pointer during the call is the datagrid and you can rummage through the column set all you want. Also note that, if you subclass DataGridColumn, as I often did in the examples on my blog (blogs.adobe.com/aharui <http://blogs.adobe.com/aharui> ), the this pointer is the column and you can use its owner property to get back out to the DataGrid and the rest of the columns. I haven't been following the thread too closely, so I may be out of context. ________________________________ From: flexcoders@yahoogroups.com <mailto:flexcoders@yahoogroups.com> [mailto:flexcoders@yahoogroups.com <mailto:flexcoders@yahoogroups.com> ] On Behalf Of Tim Hoff Sent: Saturday, August 23, 2008 10:22 AM To: flexcoders@yahoogroups.com <mailto:flexcoders@yahoogroups.com> Subject: [flexcoders] Re: DataGridColumn trouble... Sefi, If you really wanted to try to get at the calculated values in another column, in the same row, you would have to use an itemRenderer. Because an itemRenderer implements IDropInListItemRenderer, it has access to the listData property. This property contains the rowIndex and the columnIndex of the cell that it is rendering. While it would clearly be a pain in the ass, you could use the rowIndex property to locate and reference the other itemRenderer values in the same row, for the columns that are desired. My opinion is that for something simple like this, it would be overkill and probably require more processing overhead for locating the other itemRenderers. Instead, this is the solution that I would use. Don't bang too hard. :-) private function calculateStartValue(item:Object):Number { var startValue:Number = Number(item.start); // complex calcs here return startValue; } private function startLabelFunction(item:Object, column:DataGridColumn):Number { return calculateStartValue(item); } private function calculateEndValue(item:Object):Number { var endValue:Number = Number(item.end); // complex calcs here return endValue; } private function endLabelFunction(item:Object, column:DataGridColumn):Number { return calculateEndValue(item); } private function diffLabelFunction(item:Object, column:DataGridColumn):Number { return calculateEndValue(item) - calculateStartValue(item); } <mx:DataGrid dataProvider="{ myArrayCollection }"> <mx:columns> <mx:DataGridColumn headerText="Start" labelFunction="startLabelFunction"/> <mx:DataGridColumn headerText="End" labelFunction="endLabelF! unction"/> <mx:DataGridColumn headerText="Diff" labelFunction="diffLabelFunction"/> </mx:columns> </mx:DataGrid> -TH --- In flexcoders@yahoogroups.com <mailto:flexcoders@yahoogroups.com> , "Sefi Ninio" <[EMAIL PROTECTED]> wrote: > > Exactly what I was thinking... > > So, to make sure I get this straight - There is no way to get to the other > DataGridColumns from the DataGridColumn passed to it's labelFunction. > > There is no getting around to making the same calculation for multiple > column except for keeping an external map (at least the size of the grid - > which chould be quite big) for the calculations results. This, of course, is > a mess. More so when you need to update the map when the dataProvider > changes... > > Ugh... Coding in Flex is a real joy, but every now and then I find myself > banging my head against the wall... > > Sefi > > On Sat, Aug 23, 2008 at 3:20 AM, mknuttall [EMAIL PROTECTED] wrote: > > > Because then it wouldn't be a VO. :) > > > > > > --- In flexcoders@yahoogroups.com <mailto:flexcoders@yahoogroups.com> <flexcoders%40yahoogroups.com <http://40yahoogroups.com> >, "Tracy > > Spratt" tspratt@ wrote: > > > > > > If you are usign VOs, why not just add properties and have the VO do the > > > calculation internally, and forget the labelFunctions entirely? > > > > > > Tracy > > > > > > > > > >