Como popular um ComboBox no Flex

Talvez o ComboBox do Flex seja um dos componentes mais fáceis de se usar, dentre todas as tecnologias existentes. Os componentes do Flex que manipulam uma lista de dados possuem um conceito muito legal, que é o seguinte. Você passa para o componente uma Array de Objetos. Então, aquele componente (o ComboBox) tem um array de objetos dentro dele. Agora basta definir qual propriedade do objeto será visível na combo. Vamos a um exemplo:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="OnCreateComplete()">
    <mx:Script>
        <![CDATA[
            import mx.controls.Alert;
            import mx.collections.ArrayCollection;
            [Bindable]
            private var ArrayObj:ArrayCollection = new ArrayCollection();

            private function OnCreateComplete():void
            {
                var obj1:Object = new Object();
                obj1.nome = "Fulano 1";
                obj1.tel = "111222";

                var obj2:Object = new Object();
                obj2.nome = "Fulano 2";
                obj2.tel = "333222";

                var obj3:Object = new Object();
                obj3.nome = "Fulano 3";
                obj3.tel = "333555";

                ArrayObj.addItem(obj1);
                ArrayObj.addItem(obj2);
                ArrayObj.addItem(obj3); 

            }
            private function OnItemChange():void
            {
                Alert.show("Pessoa " + Combo.selectedItem.nome + " tem o telefone " + Combo.selectedItem.tel);
            }               
        ]]>
    </mx:Script>
    <mx:ComboBox id="Combo" dataProvider="{ArrayObj}" labelField="nome" change="{OnItemChange()}"/>
</mx:Application>

 

Neste exemplo, criamos um array de objetos na função OnCreateComplete. Quando criamos o Combobox, definimos a propriedade dataProvider, que é o array de objetos, e depois definimos a propriedade labelField, que diz qual dos campos do objeto serão vistos na combo. O event change dispara a função OnItemChange que usa a propriedade selecteditem do Combobox para que possa obter informações sobre o atual objeto selecionado.

6 ideias sobre “Como popular um ComboBox no Flex

    • Olá, nesse caso o Flex faz uma requisição ao servidor, através de HTTPService/WebSercive/Remoting e o servidor retorna um Array de objetos, por exemplo um array de usuários… Então você seta o dataProvider desse combobox no array.

  1. Bom dia Daniel.

    Bom, sei que este post é meio antigo, mas ele aborda um assunto de um problema atual que tenho e gostaria de saber sua opinião sobre o mesmo.

    Seguinte, estou trabalhando com Swiz e devido a isto tenha a estrutura de Controller, Model e View da minha aplicação. Na minha View eu possuo um ComboBox criado da seguinte maneira:

    Diante disto o problema é o seguinte, o Two-way-Databind da propriedade selectedItem funciona quando o bind vai do crudVO para o Combo, já quando vai do Combo para o crudVO da erro pois ele tenta converter o valor que está no label, no caso uma String, para um objeto do tipo CdtCorporativo.

    Alguma sugestão para implementar o Two-Way-Databind corretamente neste caso?

Deixe um Comentário

O seu endereço de email não será publicado Campos obrigatórios são marcados *

*

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>