Definindo valor padrão para o ComboBox

Bha, o que mais enche o saco em qualquer linguagem é definir o valor padrão para um ComboBox.

Então criei um componente que estende o ComboBox. Neste há dois métodos extras que deve ser setado o o Campo e o Valor.

Arquivo main.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
	xmlns:controls="br.mx.controls.*"
    layout="absolute"
    backgroundColor="#f6f6f6"
    backgroundGradientColors="[#f6f6f6, #bbbbbb]"
    creationComplete="init()"
    viewSourceURL="srcview/index.html" >

    <!-- Texto Superior -->
    <mx:Label x="10" y="10" fontSize="20" fontWeight="bold"
              text="Definindo valor padrão para o ComboBox" />
    <!-- Barra Horizontal -->
    <mx:HRule x="10" y="49" width="690" />

    <mx:Script>
        <![CDATA[
            import mx.collections.ArrayCollection;

            [Bindable]
            public var code:ArrayCollection = new ArrayCollection(
                [ {label:"PHP", data:"1"},
                  {label:"Java", data:"2"},
                  {label:"Coldfusion", data:"3"} ]);

        	private function init():void
        	{
        		cb1.dataProvider = code;
    			cb1.campoSelecionado = "label";
    			cb1.valorSelecionado = "Coldfusion";

        		cb2.dataProvider = code;
        		cb2.campoSelecionado = "data";
    			cb2.valorSelecionado = 2;

        	}
        ]]>
    </mx:Script>
    <controls:MeuComboBox id="cb1" x="10" y="60" width="150" />
    <controls:MeuComboBox id="cb2" x="10" y="90" width="150" />
</mx:Application>
Arquivo br/mx/controls/MeuComboBox.mxml
package br.mx.controls
{
    import mx.collections.ArrayCollection;
    import mx.controls.Alert;
    import mx.controls.ComboBox;

    public class MeuComboBox extends ComboBox
    {
        private var _campo:String = '';
        private var _valor:String = '';

        public function MeuComboBox()
        {
            super();
        }

        public function set campoSelecionado(campo:String):void
        {
            if(campo.toString().length > 0)
            {
                this._campo = campo;
                this.labelFun();
            }
        }

        public function set valorSelecionado(valor:Object):void
        {
            if(valor.toString().length > 0)
            {
                this._valor = valor.toString();
                this.labelFun();
            }
        }

        private function labelFun():void
        {
            if(this._campo.length > 0 && this._valor.length > 0)
            {
                var data:ArrayCollection = this.dataProvider as ArrayCollection;
                for(var a:int = 0; a< data.length; a++)
                {
                    if(data[a][this._campo].toString() == this._valor.toString())
                    {
                        this.selectedIndex = a;
                    }
                }
            }
        }
    }
}

Veja o exemplo.

Divirtam-se com o Código Fonte.

Fique por dentro de nossas novidades, ideias e atualizações