Pergunta

Eu tenho um Flex ComboBox que é povoado por um dataprovider tudo está bem...

Agora gostaria de adicionar uma opção padrão "--selecione um item-" no índice 0, como posso fazer isso e ainda usar um dataprovider?Não vi nenhum exemplo disso, mas não consigo imaginar que isso seja difícil ...

Foi útil?

Solução

Se você não precisa que o item padrão seja selecionável, você pode usar o prompt propriedade de ComboBox e definir o selectedIndex para -1.Isso mostrará a string que você definiu propmt como o valor selecionado até que o usuário escolha outro.No entanto, ele não aparecerá na lista de opções.

Outras dicas

Me deparei com esse problema hoje e queria compartilhar minha solução.

Eu tenho um ComboBox que possui um ArrayCollection contendo objetos como provedor de dados.Quando o aplicativo é executado, ele usa um RemoteObject para sair e obter ArrayCollection/Objects.No meu manipulador de eventos para essa chamada, basta anexar outro objeto ao início do ArrayCollection e selecioná-lo:

var defaultOption:Object = {MyLabelField: "Select One"};
myDataProvider.addItemAt(defaultOption, 0);
myComboBox.selectedIndex = 0;

Esta é a aparência do meu ComboBox para referência:

<mx:ComboBox id="myComboBox" dataProvider="{myDataProvider}" labelField="MyLabelField" />

A maneira como lidei com isso no passado foi criar uma nova coleção para servir como provedor de dados para a caixa de combinação e, em seguida, escuto as alterações na fonte original (usando um mx.BindingUtils.ChangeWatcher).Quando recebo essa notificação, recrio meu provedor de dados personalizado.

Eu gostaria de conhecer uma maneira melhor de abordar isso;Vou monitorar esta questão apenas por precaução.

Isso pode ser usado a seguir para o valor padrão selecionado da caixa de combinação

var index:String = "foo";
for(var objIndex:int = 0; objIndex < comboBox.dataProvider.length; objIndex++) {
  if(comboBox.dataProvider[objIndex].label == index)
  {
     comboBox.selectedIndex = objIndex;
     break;
  }
}
<mx:ComboBox id="comboBox" dataProvider="{_pageIndexArray}" />
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top