Thank You! That fixed it. Are there 'rules' to follow about when/if things need to be bindable? I've been using the [Bindable] tag pretty often. Should I not use it until it seems like something is not working?
Thanks again, John --- In flexcoders@yahoogroups.com, "Alex Harui" <[EMAIL PROTECTED]> wrote: > > Try removing [Bindable] from the data setter. I don't see where you are > using it, and it autogenerates change detection logic that may prevent > your setter from running since the comparision is done by reference > > > > ________________________________ > > From: flexcoders@yahoogroups.com [mailto:[EMAIL PROTECTED] On > Behalf Of j_lentzz > Sent: Wednesday, January 02, 2008 10:44 AM > To: flexcoders@yahoogroups.com > Subject: [flexcoders] Re: Datagrid Renderer not showing updated > ArrayCollection > > > > Here is the code for the renderer. I extend Label and add a > dataProvider to make it act like a combobox, so that I can specify an > index to show. That way it doesn't look like a combobox when it > renders. I'm not doing anything special to look for a change, just > implementing what I thought was necessary. > > public class LabelWithDownArrow extends Label > { > > private var _dataProvider:ArrayCollection = null; > > private var _prompt:String = null; > private var defaultPrompt:String = "Select Item..."; > private var _selectedIndex:int = -1; > > public function LabelWithDownArrow() > { > super(); > } > > public function set dataProvider(value:ArrayCollection):void { > _dataProvider = value; > } > > public function get dataProvider():ArrayCollection { > return _dataProvider; > } > > public function set selectedIndex(value:int):void { > _selectedIndex = value; > } > > public function get selectedIndex():int { > return _selectedIndex; > } > > public function set prompt(value:String):void { > _prompt = value; > } > > public function get prompt():String { > return _prompt; > } > > override protected function updateDisplayList(w:Number, h:Number):void { > super.updateDisplayList(w-15, h); // subtract from width to allow > for down arrow > > var g:Graphics = graphics; > > g.clear(); > > // add arrow to box > // Draw the triangle. > g.beginFill(0x000000); // black > g.moveTo(w - 11.5, h / 2 + 3); > g.lineTo(w - 15, h / 2 - 2); > g.lineTo(w - 8, h / 2 - 2); > g.lineTo(w - 11.5, h / 2 + 3); > g.endFill(); > } > > // method used to change what is displayed > [Bindable] > override public function set data(value:Object):void { > super.data = value; > > if (listData != null && dataProvider != null) { > > // now iterate through dp to find a matching data value, when > found put its label in the Label widget > var dpLen:int = dataProvider.length; > for (var j:int=0; j<dpLen; j++) { > if (dataProvider.getItemAt(j).data == > data[DataGridListData(listData).dataField]) { // found match > this.text = dataProvider.getItemAt(j).label; // + " " + > dp.getItemAt(j).data; > trace('found LabelWithDownArrow'); > return; > } > } > > // not found, so show comboBox prompt > if (prompt == null || prompt == "-1" || selectedIndex == -1) > this.text = defaultPrompt; > else if (selectedIndex < dataProvider.length) > this.text = dataProvider.getItemAt(selectedIndex).label; > else > this.text = ""; > > trace('not found LabelWithDownArrow'); > } > } > > } > > --- In flexcoders@yahoogroups.com <mailto:flexcoders%40yahoogroups.com> > , "Alex Harui" <aharui@> wrote: > > > > What does the renderer look like? How will it detect changes to the > > underlying data? > > > > > > > > ________________________________ > > > > From: flexcoders@yahoogroups.com <mailto:flexcoders%40yahoogroups.com> > [mailto:flexcoders@yahoogroups.com <mailto:flexcoders%40yahoogroups.com> > ] On > > Behalf Of j_lentzz > > Sent: Wednesday, January 02, 2008 7:21 AM > > To: flexcoders@yahoogroups.com <mailto:flexcoders%40yahoogroups.com> > > Subject: [flexcoders] Datagrid Renderer not showing updated > > ArrayCollection > > > > > > > > Hi, > > > > I've got a datagrid with a custom renderer. I'm not editing in the > > datagrid, but when a row is selected, I populate some TextInputs and > > ComboBoxes to let them edit the data. When they are done, I use > > itemUpdated on the datagrid ArrayCollection. This seems to work just > > fine. However, after they edit the data, it isn't being updated in > > the datagrid. I can select a different row, then select the original > > row and the new data appears in the edit locations, but only the old > > data is displayed in the datagrid. I've tried all the invalidateXXX > > methods I could find, but nothing seems to get the datagrid do display > > the new data. Also, I can set a breakpoint, examine the > > arraycollection the datagrid uses, and the correct data is present - > > just not being displayed. What do I need to do to get the datagrid to > > be forced to used the arraycollection and update all the > > itemrenderers? I'm using 2.01, would Flex 3 be better? > > > > Thanks, > > > > John > > >