/ / Flex 4 Ausgewähltes Element aus Spark DropDownList entfernen - Flex, Actionscript-3, Flex4, Flash-Builder, MX4

Flex 4 entfernt das ausgewählte Objekt aus dem Funke DropDownList - flex, actionscript-3, flex4, flash-builder, mxml

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 № 1

Solange 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.