Question

J'ai un Flex ComboBox qui est peuplé d'un dataprovider Tout est bien...

Je voudrais maintenant ajouter une option par défaut "--sélectionner un élément --" à l'index 0, comment puis-je le faire tout en utilisant un dataprovider?Je n'en ai vu aucun exemple, mais je ne peux pas imaginer que cela soit difficile...

Était-ce utile?

La solution

Si vous n'avez pas besoin que l'élément par défaut soit sélectionnable, vous pouvez utiliser le prompt propriété de ComboBox et réglez le selectedIndex à -1.Cela montrera la chaîne que vous avez définie propmt comme valeur sélectionnée jusqu'à ce que l'utilisateur en choisisse une autre.Il n'apparaîtra cependant pas dans la liste des options.

Autres conseils

Je suis tombé sur ce problème aujourd'hui et je voulais partager ma solution.

J'ai une ComboBox qui a une ArrayCollection contenant des objets comme fournisseur de données.Lorsque l'application s'exécute, elle utilise un RemoteObject pour sortir et récupérer ArrayCollection/Objects.Dans mon gestionnaire d'événements pour cet appel, je lui fais simplement ajouter un autre objet au début de ArrayCollection et le sélectionner :

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

Voici à quoi ressemble ma ComboBox pour référence :

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

La façon dont j'ai traité cela dans le passé est de créer une nouvelle collection pour servir de fournisseur de données pour la liste déroulante, puis j'écoute les modifications apportées à la source d'origine (en utilisant un mx.BindingUtils.ChangeWatcher).Lorsque je reçois une telle notification, je recrée mon fournisseur de données personnalisé.

J'aurais aimé connaître une meilleure façon d'aborder cela ;Je surveillerai cette question juste au cas où.

Ceci peut être utilisé après le code pour la valeur par défaut sélectionnée de la combobox

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}" />
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top