Da uma olhada em
http://lab.kapit.fr/media/demo/klovis/prod/index.html#/AutoComplete:+Filter
acho
que tem o que vc precisa.

sds,

Robson Mattos


Em 8 de maio de 2013 23:23, eduardosavo...@yahoo.com.br <
eduardosavo...@yahoo.com.br> escreveu:

> Estou tentando criar um um componente Dropdownlist que funcione two-way
> databind, fiz o componente, mas esta instavel tem hora q ele funciona e tem
> hora q não abaixo segue a ideia de uso e o componente.
>
> Estou enviando para lista pq nao consegui achar nada na net... esta
> dificil.. rsrsrsrsrs
>
> Class User_DTO:
> var id:int;
> var nome:String;
> var status:int;
>
> // ex: minha array ficaria
> private var status:ArrayCollection = new ArrayCollection([{id:"1",
> descricao: "aberto"}, {id: "2", descricao: "fechado"}]);
>
>                 <components:SDropDownList x=width="260" id="dd_status"
>                                          dataProvider="{status}"
>                                          keyField="id"
>
> selectedValue="@{user.status}"
>                                          labelField="descricao"/>
>
> O Componente....
>
> package components
> {
>     import flash.events.Event;
>
>     import mx.collections.IList;
>     import mx.utils.ObjectUtil;
>
>     import spark.components.DropDownList;
>
>     public class SDropDownList extends DropDownList
>     {
>         public function SDropDownList()
>         {
>             super();
>         }
>
>         //Campo que será utilizado na pesquisa dentro do this.dataProvider
>         private var _keyField:String;
>
>         [Bindable]
>         public function get keyField():String
>         {
>             return _keyField;
>         }
>
>         public function set keyField(value:String):void
>         {
>             _keyField = value;
>         }
>
>         //Campo usado para realizar o bind com o DTO.
>         private var _selectedValue:*;
>
>         [Bindable]
>         //        [Bindable("atualiza")]
>         public function get selectedValue():*
>         {
>             return _selectedValue;
>         }
>
>         public function set selectedValue(value:*):void
>         {
>             _selectedValue = getValues(value);
>         }
>
>         private function getValues(value:*):*
>         {
>             if (value == null)
>             {
>                 selectedIndex = -1;
>                 return;
>             }
>
>             for each (var obj:Object in dataProvider)
>             {
>                 if (ObjectUtil.compare(obj[keyField], value) == 0)
>                 {
>                     //selectedItem = obj;
>                     selectedIndex = dataProvider.getItemIndex(obj);
>                     return obj[keyField];
>                 }
>             }
>         }
>
>         override public function set dataProvider(value:IList):void
>         {
>             super.dataProvider = value;
>
>             if (selectedValue != null)
>                 selectedValue = getValues(selectedItem[keyField]);
>         }
>     }
> }
>
> --
> --
> Você recebeu esta mensagem porque está inscrito na lista "flexdev"
> Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com
> Para sair da lista, envie um email em branco para
> flexdev-unsubscr...@googlegroups.com
> Mais opções estão disponíveis em http://groups.google.com/group/flexdev
> ---
> Você está recebendo esta mensagem porque se inscreveu no grupo "flexdev"
> dos Grupos do Google.
> Para cancelar a inscrição neste grupo e parar de receber seus e-mails,
> envie um e-mail para flexdev+unsubscr...@googlegroups.com.
> Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
>
>
>



-- 
Robson Mattos

-- 
-- 
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com
Para sair da lista, envie um email em branco para 
flexdev-unsubscr...@googlegroups.com
Mais opções estão disponíveis em http://groups.google.com/group/flexdev
--- 
Você está recebendo esta mensagem porque se inscreveu no grupo "flexdev" dos 
Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um 
e-mail para flexdev+unsubscr...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.


Responder a