Hi there,

You can use the following code:

<?xml version="1.0" encoding="utf-8"?>
<mx:ComboBox xmlns:mx="http://www.adobe.com/2006/mxml";>
   <mx:Script>
      <![CDATA[
         private var _selectedValue:String;
         private var bSelectedValueSet:Boolean = false;
         private var bDataProviderSet:Boolean = false;

         // Override committ, this may be called repeatedly 
         override protected function commitProperties():void
         {
            // invoke ComboBox version 
            super.commitProperties();

            // If value set and have dataProvider 
            if (bSelectedValueSet && bDataProviderSet)
            {
               // Set flag to false so code won't be called until selectedValue 
is set again 
               bSelectedValueSet=false;
               // Loop through dataProvider 
               for (var i:int=0;i<this.dataProvider.length;i++)
               {
                  // Get this item's data 
                  var item:String = this.dataProvider[i].FIELDNAME;
   
                  // Check if is selectedValue 
                  if(item == _selectedValue)
                  {
                     // Yes, set selectedIndex 
                     this.selectedIndex = i;
                     break;
                  }
               }
            }
         }

         // Trap dataProvider being set 
         override public function set dataProvider(o:Object):void
         {
            // invoke ComboBox version 
            super.dataProvider = o;

            // This may get called before dataProvider is set, so make sure not 
null and has entries 
            if (o!=null && o.length)
            {
               // Got it, set flag 
               bDataProviderSet = true;
            } else
               bDataProviderSet = false;
         }

         // set for selectedValue 
         public function set selectedValue(s:String):void
         {
            // Set flag 
            bSelectedValueSet = true;
            // Save value 
            _selectedValue = s;
            // Invalidate to force commit 
            invalidateProperties();
         }
      ]]>
   </mx:Script>

</mx:ComboBox>



create this as a reusable component and use this instead of regular 
combobox:

1) Make sure to replace "FIELDNAME" in the above code with the name of the 
field in the dataprovider.

2) Instead of selectedindex use comboboxId.selectedValue = "Value you want to 
ser".

this will solve your problem.


vin.

Reply via email to