Domanda

Ho un Flex ComboBox che viene popolato da a dataprovider va tutto bene...

Ora vorrei aggiungere un'opzione predefinita "- seleziona un elemento --" all'indice 0, come posso farlo e utilizzare comunque un dataprovider?Non ho visto nessun esempio di questo tipo, ma non riesco a immaginare che sia difficile...

È stato utile?

Soluzione

Se non è necessario che l'elemento predefinito sia selezionabile, è possibile utilizzare il file prompt proprietà di ComboBox e impostare il selectedIndex a -1.Questo mostrerà la stringa che hai impostato propmt come valore selezionato finché l'utente non ne sceglie un altro.Tuttavia non apparirà nell'elenco delle opzioni.

Altri suggerimenti

Mi sono imbattuto in questo problema oggi e volevo condividere la mia soluzione.

Ho un ComboBox che ha un ArrayCollection contenente oggetti come provider di dati.Quando l'applicazione viene eseguita, utilizza un RemoteObject per uscire e ottenere ArrayCollection/Objects.Nel mio gestore eventi per quella chiamata ho semplicemente aggiunto un altro oggetto all'inizio di ArrayCollection e selezionarlo:

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

Questo è l'aspetto del mio ComboBox come riferimento:

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

Il modo in cui ho affrontato questo problema in passato è stato creare una nuova raccolta che fungesse da fornitore di dati per la casella combinata, quindi ascolto le modifiche alla fonte originale (usando un mx.BindingUtils.ChangeWatcher).Quando ricevo una notifica di questo tipo, ricrea il mio fornitore di dati personalizzato.

Vorrei conoscere un modo migliore per affrontare questo problema;Monitorerò questa domanda per ogni evenienza.

Questo può essere utilizzato seguendo il codice per il valore predefinito selezionato della casella combinata

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}" />
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top