--- In [email protected], "Tracy Spratt" <tr...@...> wrote:
>
> Refresh() is intended to re-apply a sort of filter to a collection.  If it
> is working in your case it is a side effect.

Yeah, I figured as much.  I noticed that if I opened then closed then re-opened 
the drop-down, the data would "sync" itself properly.  Adding this refresh() 
statement was a way to force that to happen -- the user clicks on the combo 
box, the refresh happens (forcing the box closed), then the second click opens 
the drop-down with the proper data...  Total hack-job, but it works.

> 
> I couldn't find your previous post to look at the code, but I still suspect
> recycling issues.  For a combo box, you have to do two actions on set data
> (actually  in commitProperties, of course).  You must re-assign to
> dataProvider, and you must set the selectedIndex (you can only use
> selectedItem if your items are simple strings or numbers).  Are you doing
> both of those things?

Here's my code as it stands right now.  Thanks for taking a look:
<?xml version="1.0" encoding="utf-8"?>
<mx:ComboBox xmlns:mx="http://www.adobe.com/2006/mxml";  height="100%" 
width="100%"
                         dataProvider="{listOfFees}" 
labelFunction="formatLabel" change="changeHandler(event)" 
                         openDuration="0" closeDuration="0">
        <mx:Script>
                <![CDATA[
                        import mx.collections.ArrayCollection;
                        import mx.utils.ObjectUtil;
                        import mx.formatters.CurrencyFormatter;
                        import mx.controls.DataGrid;
                        import flash.events.Event;
                        
                        [Bindable]private var listOfFees:ArrayCollection;
                        
                        public override function set data(value:Object):void{
                super.data = value;
                if (value == null) {
                        listOfFees = null;
                } else {
                        if (data.comp != "y") {
                                                listOfFees = new 
ArrayCollection([data.course_fee1]);
                                if (data.course_fee2 != 0) {
                                        listOfFees.addItem(data.course_fee2); }
                                if (data.course_fee3 != 0) {
                                        listOfFees.addItem(data.course_fee3); }
                                if (data.course_fee4 != 0) {
                                        listOfFees.addItem(data.course_fee4); }
                                if (data.course_fee5 != 0) {
                                        listOfFees.addItem(data.course_fee5); }
                        } else {
                                listOfFees = new ArrayCollection([0] as Array);
                        }
                        
                        if (data.editable == "y") {
                                this.enabled = true;
                        } else {
                                this.enabled = false;
                        }
                        
                        this.selectedItem = data.fee_chosen;
                        this.selectedIndex = data.fee_type - 1;
                }
                        }
                        
                        private function formatLabel(item:Object):String {
                                return currencyFormat.format(item);
                        }
                        
                        override protected function 
focusInHandler(event:FocusEvent):void {
                                listOfFees.refresh();
                        }
                        
                        public function changeHandler(event:Event):void {
                                data.fee_chosen = this.selectedItem;
                                data.fee_type = this.selectedIndex + 1;
                        }
                        
                ]]>
        </mx:Script>
        
        <mx:CurrencyFormatter id="currencyFormat" precision="2"/>

</mx:ComboBox>


Reply via email to