Selecionando um item em um ComboBox II
Há um tempo atrás eu escrevi um artigo sobre como selecionar um item em um ComboBox no Flex baseado no label do combo. Naquela época, eu ainda estava aprendendo algumas coisas. Como eu já aprendi um pouco, resolvi fazer uma versão mais decente daquele exemplo.
Essa aplicação faz exatamente a mesma coisa: tem um combo com uma relação de frutas e um botão que, ao ser clicado, deverá selecionar no combo o item cujo label é “Uva”. Coisa simples.
Vamos lá. Primeira diferença em relação ao outro exemplo: a relação de frutas está um um XML, e não em um array. Aqui está a definição do nosso XML:
[Bindable] private var frutasProvider:XML = <frutas> <fruta> <nome>Laranja</nome> <preco>5</preco> </fruta> <fruta> <nome>Uva</nome> <preco>3</preco> </fruta> <fruta> <nome>Melancia</nome> <preco>8</preco> </fruta> <fruta> <nome>Pêra</nome> <preco>10</preco> </fruta> </frutas>
Nosso XML tem de ser [Bindable], pois ele será o dataProvider do nosso combo. E por falar nisso, aqui está ele, junto com o botão:
<mx:ComboBox id="cboFrutas" x="10" y="40" dataProvider="{frutasProvider.fruta}" labelField="nome" prompt="Selecione..." width="146"></mx:ComboBox>
<mx:Button x="31.5" y="10" label="Selcionar Uva" click="selecionarUvaClickHandler(event)"/>
Até aqui, nada novo: o dataProvider do combo é o XML, e o campo do XML que tem o label do combo (labelField) é o campo “nome”. A propriedade prompt tem o texto que aparecerá no combo enquanto nenhum item está selecionado. E o botão não tem nada especial, só uma chamada para a função a seguir no evento “click”:
private function selecionarUvaClickHandler(event:MouseEvent):void
{
cboFrutas.selectedItem = frutasProvider.fruta.(nome == "Uva");
}
Aqui é que está o “truque”: ao invés de ter que ficar iterando entre os itens do dataProvider, podemos deixar que o E4X faça isso por nós. O que essa linha quer dizer é que o item selecionado do combobox (cboFrutas.selectedItem) é igual ao objeto <fruta> que está no XML, e que tenha a propriedade <nome> igual a “Uva”.
Isso é possível porque o E4X (Ecma for XML) dispõe de uma variedade de métodos para facilitar a vida do programador nessas tarefas braçais. Para mais informações sobre o E4X, consulte a documentação. Veja o exemplo funcionando:
Ficou muito mais rápido, fácil e elegante selecionar um item em um combo, não?!
Poderia avaliar este artigo, por favor? |


Pingback: Elvis Fernandes » Blog Archive » Selecionando um item em um ComboBox no Flex
Pingback: Combobox « Bruno bg + ADOBE FLEX