Very nice! Thank you Jeremy and Tim for putting this together for me! Now I just need to go read more in the Flex docs about the item renderer interfaces and the eventing magic that's going on behind the scenes. Again, much thanks.
Bruce --- In flexcoders@yahoogroups.com, "Tim Hoff" <[EMAIL PROTECTED]> wrote: > > > Per Jeremy's suggestion, this will work in your components.imgReset > itemRenderer component. > > -TH > > <mx:Script> > <![CDATA[ > > import mx.events.DataGridEvent; > > public function init():void // creationComplete of the itemRenderer > { > > parentDocument.myGrid.addEventListener (DataGridEvent.ITEM_EDIT_BEGIN, > showResetState); > > parentDocument.myGrid.addEventListener(DataGridEvent.ITEM_EDIT_END, > showDefaultState); > } > > public function showResetState(event:DataGridEvent):void > { > if (this.data == event.itemRenderer.data) > { > currentState = 'showReset'; > } > } > > public function showDefaultState(event:DataGridEvent):void > { > currentState = ''; > } > > ]]> > </mx:Script> > > --- In flexcoders@yahoogroups.com, "Bruce Denham" <bdenham@> wrote: > > > > Thanks, Tim and Tracy. I've started to explore/experiment more based > > on your feedback. I'll play with it more tonight and let you know > > what I come up with. Thanks, again! > > > > Bruce > > > > --- In flexcoders@yahoogroups.com, "Tim Hoff" TimHoff@ wrote: > > > > > > > > > Hi Bruce, > > > > > > I've been trying to figure this one out. As Tracy suggests, you > > could > > > put something like this in the itemRenderer component? I'm not > > sure, > > > however, how to associate the itemEditorInstance with the > > itemRenderer > > > instance. This might get you a little closer. > > > > > > -TH > > > > > > <mx:Script> > > > <![CDATA[ > > > > > > import mx.core.Application; > > > import mx.events.DataGridEvent; > > > > > > public function init():void // creationComplete of the > > itemRenderer > > > { > > > > > > Application.application.myGrid.addEventListener > > (DataGridEvent.ITEM_EDIT_\ > > > BEGIN, showResetState); > > > > > > Application.application.myGrid.addEventListener > > (DataGridEvent.ITEM_EDIT_\ > > > END, showDefaultState); > > > } > > > > > > public function showResetState(event:DataGridEvent):void > > > { > > > // not sure exactly how, but you probably have to > > check here > > > to see if the itemEditorInstance relates to this > > > // itemRenderer instance. Something like if > > (this = > > > event.itemRenderer) {} ??? > > > currentState = 'showReset'; > > > } > > > > > > public function showDefaultState(event:DataGridEvent):void > > > { > > > currentState = ''; > > > } > > > > > > ]]> > > > </mx:Script> > > > > > > --- In flexcoders@yahoogroups.com, "Tracy Spratt" <tspratt@> wrote: > > > > > > > > I think you need to do this via the underlying dataProvider, > > instead > > > of > > > > trying to directly manipulate rendered controls. > > > > > > > > > > > > > > > > On the edit event of the text control, set a property in the > > > > corresponding dataProvider item. Have the item renderer respond > > to > > > that > > > > value change by changing its state. > > > > > > > > > > > > > > > > Tracy > > > > > > > > > > > > > > > > ________________________________ > > > > > > > > From: flexcoders@yahoogroups.com > > [mailto:[EMAIL PROTECTED] > > > On > > > > Behalf Of flex8it > > > > Sent: Monday, June 19, 2006 1:24 PM > > > > To: flexcoders@yahoogroups.com > > > > Subject: [flexcoders] Re: Getting a DataGrid item renderer > > instance > > > > > > > > > > > > > > > > More specifically, here's what I'm trying to change the > > viewState in > > > > my itemRenderer when the DataGrid's textfield is edited. But in > > > > order to do that, I need to somehow get an instance reference to > > my > > > > renderer component. And nothing I've done seems to work... > > > > > > > > <?xml version="1.0"?> > > > > <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml > > > > <http://www.adobe.com/2006/mxml> " > > > > xmlns:comp="components.*" > > > > verticalAlign="top" horizontalAlign="center" > > > > layout="absolute"> > > > > > > > > <mx:Script> > > > > <![CDATA[ > > > > import components.imgReset; > > > > import mx.collections.ArrayCollection; > > > > import mx.events.DataGridEvent; > > > > import mx.controls.Alert; > > > > > > > > [Bindable] > > > > public var choices:ArrayCollection = choices = new > > > > ArrayCollection([ > > > > {resetImage: "images/reset.png", fieldName: "Smalltown"}, > > > > {resetImage: "images/reset.png", fieldName: "Bigtown"}, > > > > ]); > > > > > > > > private function changeRendererState(event:DataGridEvent) : void > > > > { > > > > // I can get the rowIndex and columnIndex for the renderer, > > > > // but I don't exactly how to use them to get to the > > > > renderer object... > > > > Alert.show(event.rowIndex + ", " + (event.columnIndex - 1)); > > > > > > > > // I just want to get the renderer instance... > > > > // First, there's a problem with my typecasting ?? > > > > // Second, there's no such thing as a row property on > > > > // the DataGrid, but I really want there to be... > > > > var RendererInstance:imgReset = imgReset(this.myGrid.columns > > > > [event.columnIndex-1].row[event.rowIndex].itemRenderer); > > > > > > > > // Now I want to manipulate renderer instance > > > > properties/states... > > > > RendererInstance.currentState = 'showReset'; > > > > } > > > > ]]> > > > > </mx:Script> > > > > <mx:DataGrid id="myGrid" > > > > editable="true" > > > > dataProvider="{choices}" > > > > itemEditEnd="changeRendererState(event)" > > > > > <mx:columns> > > > > <mx:DataGridColumn dataField="resetImage" > > > > headerRenderer="components.HeaderReset" > > > > itemRenderer="components.imgReset"/> > > > > <mx:DataGridColumn dataField="fieldName" > > > > editable="true" width="230" > > > > headerText="Field Name" /> > > > > </mx:columns> > > > > </mx:DataGrid> > > > > </mx:Application> > > > > > > > > I'd sure appreciate some help on this conundrum. > > > > > > > > Many Thanks, > > > > Bruce > > > > > > > > --- In flexcoders@yahoogroups.com > > > <mailto:flexcoders%40yahoogroups.com> > > > > , "flex8it" bdenham@ wrote: > > > > > > > > > > I have simple datagrid with 2 columns and 2 rows like this: > > > > > > > > > > column 0 column 1 > > > > > -------- --------- > > > > > image textfield > > > > > image textfield > > > > > > > > > > Column 0 contains my ImageRenderer component. > > > > > Column 1 contains the DataGrid's default item renderer and > > editor: > > > > > text, textfield. > > > > > > > > > > First Problem: > > > > > How do I identify/get a reference to a particular instance of > > my > > > > > ImageRenderer from, say, column[0], row[1]? > > > > > > > > > > Second (related) Problem: > > > > > How do I get the ImageRender instance that corresponds to the > > row > > > > of > > > > > the textfield that fires an event when edited? > > > > > > > > > > I've been wrestling with this problem for days now, and I just > > > > can't > > > > > seem to get a grasp on the communication/eventing > > infrastructure > > > > > that's probably necessary to pull this off. Please help. > > > > > > > > > > Thanks, > > > > > Bruce > > > > > > > > > > > > > > > ------------------------ Yahoo! Groups Sponsor --------------------~--> Yahoo! Groups gets a make over. See the new email design. http://us.click.yahoo.com/XISQkA/lOaOAA/yQLSAA/nhFolB/TM --------------------------------------------------------------------~-> -- Flexcoders Mailing List FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt Search Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.com Yahoo! Groups Links <*> To visit your group on the web, go to: http://groups.yahoo.com/group/flexcoders/ <*> To unsubscribe from this group, send an email to: [EMAIL PROTECTED] <*> Your use of Yahoo! Groups is subject to: http://docs.yahoo.com/info/terms/