Bom senso no uso da Tecnologia da Informação
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?!
| Imprimir artigo | Este artigo foi escrito por Elvis Fernandes em 17/08/2008 às 11:16, e está arquivado em Desenvolvimento, Flex. Siga quaisquer respostas a este artigo através do RSS 2.0. Você pode deixar uma resposta ou fazer um trackback do seu próprio site. |
-
Marcelo
-
Roberto
-
carro

