2008-08-29 15 views
14

Ich habe eine Flex ComboBox, die von einem Datenprovider bevölkert wird alles gut ist ...Flex ComboBox, Standardwert und Dataprovider

ich jetzt eine Standard hinzufügen möchten „- wählen Sie ein Element -“ Option der 0-Index, wie kann ich das machen und trotzdem einen Datenprovider nutzen? Ich habe keine Beispiele dafür gesehen, aber ich kann mir nicht vorstellen, dass es schwer ist ...

Antwort

35

Wenn das Standardelement nicht ausgewählt werden kann, können Sie die prompt-Eigenschaft ComboBox verwenden und auf -1 setzen. Das zeigt die Zeichenfolge, die Sie propmt als den ausgewählten Wert festlegen, bis der Benutzer einen anderen wählt. Es wird jedoch nicht in der Liste der Optionen angezeigt.

+3

dies funktioniert immer noch für Spark DropDownList - danke – danjp

1

Die Art, wie ich in der Vergangenheit damit umgegangen bin, ist die Schaffung einer neuen Sammlung, die als Datenlieferant für die Combobox, und dann höre ich auf Änderungen an der ursprünglichen Quelle (mit einem mx.BindingUtils.ChangeWatcher). Wenn ich eine solche Benachrichtigung erhalte, erstelle ich meinen benutzerdefinierten Datenanbieter neu.

Ich wünschte, ich wüsste einen besseren Weg, dies zu nähern; Ich werde diese Frage nur für den Fall überwachen.

4

Ich bin heute auf dieses Problem gestoßen und wollte meine Lösung teilen.

Ich habe eine ComboBox, die eine ArrayCollection mit Objekten als Datenprovider hat. Wenn die Anwendung ausgeführt wird, verwendet sie ein RemoteObject, um die ArrayCollection/Objects auszulesen. In meinem Event-Handler für diesen Anruf Ich habe es nur ein anderes Objekt zu Beginn des Arraycollection anhängen und sie wählen:

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

Dies ist, was meine ComboBox wie Referenz aussieht:

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

Dies kann wird verwendet folgenden Code für ausgewählte Standardwert der 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}" /> 
Verwandte Themen