Mein Stakeholder hat die Bitte, dieaktuell ausgewähltes Element aus dem DropDownList-Steuerelement in der Anwendung. Beispiel: Dropdown mit [item1, item2, item3, item4]. Wenn item2 ausgewählt ist, sind die einzigen Elemente in der Dropdown-Liste [item1, item3, item4].
Irgendwelche Gedanken darüber, ob dies möglich ist und ob und wie dies zu implementieren wäre, wäre wirklich sehr dankbar.
Danke im Voraus.
Verwenden von Flash Builder 4 mit Flex 4.0-SDK
Antworten:
0 für die Antwort № 1Solange Ihre Dropdown-Liste eine ArrayCollection als Datenanbieter verwendet, können Sie eine Filterfunktion angeben, um den aktuell ausgewählten Eintrag zu entfernen:
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
creationComplete="onCreationComplete()">
<fx:Script>
<![CDATA[
[Bindable] private var _yourAC:ArrayCollection = new ArrayCollection(["item 1", "item 2", "item 3"]);
private function onCreationComplete():void
{
_yourAC.filterFunction = filter;
}
private function filter(item:Object):Boolean
{
return item != list.selectedItem;
}
]]>
</fx:Script>
<s:DropDownList id="list" dataProvider="{this._yourAC}" change="this._yourAC.refresh();" />
</s:Application>
Ich denke, das sollte den ausgewählten Artikel herausfiltern :)
0 für die Antwort № 2
Kein kundenspezifisches Enthäuten erforderlich. Erstellen Sie einfach einen neuen ItemRenderer für Ihre Dropdown-Liste und das Änderungsereignis der übergeordneten Gruppe visible
und includeInLayout
Falsch wenn parent.selectedItem = data
. Um zu vermeiden, dass ein brandneuer Itemrenderer erstellt wird, können Sie einfach die Klasse "defaultItemRenderer" von spark erweitern visible="{data != (parent as DropDownList).selectedItem}"
sollte es binden Wenn nicht, machen Sie es auch auf einer Veranstaltung.