Usually this means you are not using the Collection API to update the dataProvider, but are directly assigning a value to an item property. Using the API to update the dataProvider will ensure the necessary events are dispatched to ensure your visible UI gets updated.
Another alternative is to call Collection.itemUpdated(item) after each update. Tracy Spratt Lariat Services Flex development bandwidth available ________________________________ From: [email protected] [mailto:[email protected]] On Behalf Of flexcoder2008 Sent: Monday, February 02, 2009 11:52 AM To: [email protected] Subject: [flexcoders] Re: Datagrid bound to XMLListCollection not updating properly - ItemRenderer issue? To put it more simply, how do I force an itemRenderer bound to an image to refresh itself? --- In [email protected] <mailto:flexcoders%40yahoogroups.com> , "flexcoder2008" <djohnso...@...> wrote: > > I am having trouble getting a datagrid that is bound to an > XMLListCollection to update properly. The datagrid uses item > renderers for a couple of the columns which display a simple colored > image. > > > <mx:itemRenderer > > <mx:Component> > <mx:Canvas > > <mx:Image source="{data.MyImage}" /> > </mx:Canvas> > </mx:Component> > </mx:itemRenderer> > > > This datagrid's dataProvider is set to bind to an XMLListCollection > variable which contains XML with one of the nodes being <MyImage> > > > This datagrid is a part of a module that gets loaded into a > TabNavigator control. When the module initializes I loop through each > row in the datagrid and check the values of the XML, and depending on > certain values, I update the content of the <MyImage> node, which in > turn will change the image source property. > > When the module first loads, everything works fine and the grid > displays correctly. > > The problem happens when I load a different module into the > tabNavigator. In a seperate module I do an update to this same > XMLListCollection. (I am using the Cairngorm framework and all my > shared data is stored in the model. ) When I reload the first module, > and the initialization logic fires, as I am looping through to do the > calculations to update the <MyImage> node I can see that everything is > updating in the XMLListCollection correctly. > > However, when the dataGrid displays, the row that corresponds to the > updated XML in the XMLListCollection is displaying a blank row, even > though the underlying values are correct. > > I believe this is a problem with the ItemRenderer not updating itself. > How do I force it to invalidate? I have tried doing a > dataGrid.dataProvider.refresh() and calling invalidateDisplayList() > etc. but cannot figure this one out. > > One workaround I discovered is that when I reload the first module > after updating the underlying XMLListCollection, if I append a new > empty node to the XML like so: myXML.* += <empty /> Then the > updated row displays correctly! > > Has anybody else out there ran into this problem? >

