Flex 4 удалить выбранный элемент из искры DropDownList - PullRequest
2 голосов
/ 01 июля 2011

У моей заинтересованной стороны есть запрос на удаление выбранного в данный момент элемента из элементов управления DropDownList в приложении. Например, раскрывающийся список с [item1, item2, item3, item4], если item2 выбран, то единственными элементами в раскрывающемся списке будут [item1, item3, item4]

Любые мысли о том, возможно ли это, и если да, то о том, как это осуществить, будут по достоинству оценены.

Заранее спасибо.

Использование Flash Builder 4 с Flex 4.0 SDK

Ответы [ 2 ]

0 голосов
/ 01 июля 2011

Нет необходимости в индивидуальном оформлении скинов.Просто создайте новый ItemRenderer для вашего dropdownList и в событии изменения родителя установите visible и includeInLayout в false, если parent.selectedItem = data.Чтобы избежать создания совершенно нового itemrenderer, вы можете просто расширить класс spark по умолчанию «defaultItemRenderer».Если вы используете MXML itemrenderer, просто установите visible="{data != (parent as DropDownList).selectedItem}", он должен связываться.Если нет, то сделайте это и на мероприятии.

0 голосов
/ 01 июля 2011

Пока ваш выпадающий список использует 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>

Я думаю, это должно отфильтровать выбранный вами элемент :)

...