Set selectedItem auf einem Flex-Kombinationsfeld, wenn das Kombinationsfeld nicht angezeigt?
Ich versuche zu setzen selectedItem auf ein Kombinationsfeld(mx). Im folgenden ist der code :
callLater(function ():void {
if (comboBox.dataProvider && comboBox.dataProvider.length > 0) {
comboBox.selectedItem = comboBox.dataProvider.getItemAt(0);
}
});
EDIT : ich bin Comboboxes erstellen programmatisch :
var comboBox:ComboBox = new ComboBox();
Dies funktioniert sehr gut, und legt den selectedItem an das erste Element aus dem Datenprovider - aber NUR, wenn die combobox auf dem Bildschirm angezeigt wird und nicht versteckt in eine Reduzierbare Gruppe.
Ich habe eine situation wo ich kann die combobox umschlossen eine Reduzierbare Gruppe (meine eigene Komponente) und nicht angezeigt, bis die reduzierte Gruppe erweitert (siehe Bilder unten)
Ersten Bild : Bei den Gruppen reduziert sind und die combobox wird nicht angezeigt, aber erstellt
Zweiten Bild : wenn die reduzierte Gruppe ist erweitert um die Anzeige der combobox - beachten Sie, dass das erste element im Datenprovider, verwenden NICHT ausgewählt ist, als selectedItem
folgende Zeile wird IMMER ausgeführt
comboBox.selectedItem = comboBox.dataProvider.getItemAt(0);
Aber das erste Element ist in dem Fall, wenn die combobox-Komponente eingeschlossen ist, in einer reduzierten Gruppe - funktioniert gut, wenn die combobox ist eingeschlossen in einer erweiterten Gruppe.
Ich denke das ist ein bug im flex - es sei denn, jemand der anders denkt ?
InformationsquelleAutor Ved | 2012-05-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem ist, dass Sie nicht wissen können, wenn das Objekt der Bühne Hinzugefügt wird. Wie Sie bereits erwähnten, wird der Artikel nicht eingestellt werden, wenn die Komponente nicht sichtbar ist.
Erstellung Abgeschlossen ist, nicht mehrfach aufgerufen, daher müssen Sie einen anderen Weg, es zu tun.
Um sicherzustellen, das Element wird festgelegt, um die Komponente nach der es wieder sichtbar ist, rufen Sie einfach den 'callLater' - Methode für die comboBox selbst (Dann ist die Methode nur aufgerufen, nachdem die Komponente wurde erneut gerendert, anstatt Sie die gesamte Anwendung)
InformationsquelleAutor Dominik
Habe ich gesehen, dass dieses Problem in der Vergangenheit. Ich arbeite um ihn herum durch das setzen von globalen Variablen und Einstellung des ausgewählten Elements der comboBox auf den Wert der Variablen.
Beispiel:
Dann auf deine comboBox:
Sie können hinzufügen und entfernen von Ereignis-Listenern, wie diese:
comboBox.addEventListener(FlexEvent.UPDATE_COMPLETE, handleUpdateComplete);
Danke @MarjoleinKleinman - das ist, was ich getan habe. Ich verwendet CREATION_COMPLETE, weil auf UPDATE_COMPLETE, ich bin nicht in der Lage, wählen Sie einen anderen Wert aus Combo (auf Auswahl, UPDATE_COMPLETE feuert erneut und wählt die erste Position wieder)
InformationsquelleAutor Dom
Ich arbeiten mit der combobox, da flex-sdk-3. Ich verwendet, um selectedIndex statt selectedItem. Art workaround, aber funktioniert immer für mich:
Funktioniert sowohl für mx-und spark.
InformationsquelleAutor Stan Reshetnyk
Konnte ich dieses Problem lösen, indem Sie die Einstellung des ausgewählten Elements auf CREATION_COMPLETE wie folgt:
InformationsquelleAutor Ved