我的利益相关者请求从应用程序中的DropDownList控件中删除当前选定的项目。例如,如果选择了item2,则下拉[item1,item2,item3,item4],然后下拉列表中的唯一项目将是[item1,item3,item4]
关于这是否可能的任何想法,如果是这样,如何实现它真的很感激。
提前致谢。
将Flash Builder 4与Flex 4.0 sdk一起使用
答案 0 :(得分:0)
只要您的下拉列表使用ArrayCollection作为数据提供者,您就可以指定一个过滤器函数来删除当前选定的条目:
<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>
我认为这应该过滤掉您选择的项目:)
答案 1 :(得分:0)
无需自定义皮肤。只需为dropdownList和父级的更改事件创建一个新的ItemRenderer,如果visible
,则将includeInLayout
和parent.selectedItem = data
设置为false。为了避免创建全新的itemrenderer,您可能只需要扩展spark的“defaultItemRenderer”类。如果您使用MXML itemrenderer,只需设置visible="{data != (parent as DropDownList).selectedItem}"
,它就应该绑定。如果没有,也可以在活动中进行。