Flex 4从spark DropDownList中删除所选项目

发布于 2024-11-18 02:54:02 字数 231 浏览 1 评论 0原文

我的利益相关者请求从应用程序的 DropDownList 控件中删除当前选定的项目。例如,带有 [item1, item2, item3, item4] 的下拉列表,如果选择了 item2,则下拉列表中的唯一项目将是 [item1, item3, item4]

关于这是否可能以及如何实现的任何想法真的会很感激。

提前致谢。

将 Flash Builder 4 与 Flex 4.0 sdk 结合使用

My stakeholder has a request to remove the currently selected item from the DropDownList control(s) in the application. For example a drop down with [item1, item2, item3, item4] if item2 is selected then the only items in the drop down will be [item1, item3, item4]

Any thoughts on if this is possible and if so how to implement it would really be appreciated.

Thanks in advance.

Using Flash Builder 4 with Flex 4.0 sdk

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

空城缀染半城烟沙 2024-11-25 02:54:02

只要您的下拉列表使用 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>

我认为这应该过滤掉您选定的项目:)

As long as your dropdown list uses an ArrayCollection as a data provider, you can specify a filter function to remove the current selected entry:

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

I think this should filter out your selected item :)

猫性小仙女 2024-11-25 02:54:02

无需自定义蒙皮。只需为 dropdownList 创建一个新的 ItemRenderer,并在父项的更改事件中,如果 parent.selectedItem = data,则将 visibleincludeInLayout 设置为 false。为了避免创建全新的 itemrenderer,您可以扩展 Spark 的“defaultItemRenderer”类。如果您使用 MXML itemrenderer,只需设置 visible="{data != (parent as DropDownList).selectedItem}",它就应该绑定。如果没有,也可以在活动中这样做。

No custom skinning needed. Just create a new ItemRenderer for your dropdownList and on the the parent's change event, set visible and includeInLayout to false if parent.selectedItem = data. To avoid creating a brand new itemrenderer, you could potentially just extend spark's "defaultItemRenderer" class. If you use an MXML itemrenderer, simply set visible="{data != (parent as DropDownList).selectedItem}", it should bind. If not, do it on an event as well.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文