Всплывающее окно в гибком дереве - PullRequest
0 голосов
/ 09 мая 2011

У меня есть дерево mx: с TreeItemRenderer, как показано ниже.

Parent1 (Удалить | Переименовать)
Child1
Child2
Parent2 (Удалить | Переименовать)
Child3
Child4

Удалить и переименовать являются кнопки ссылки

Теперь, когда я нажимаю Переименовать, всплывающее окно должно отображаться как

    OldName       : Parent1(Text Input showning present Name)
    Enter New Name: Parent1NewName(Text Input for entering New name) 

         OK | CANCEL Buttons 

Afetr При вводе нового имени нажмите кнопку ОК, всплывающее окно должно быть закрыто и необходимо получить значение в treeItemRenderer.

У меня есть логика переименовать Parent1 в TreeItemRenderer, а также я могу получить Parent1 во всплывающем окне OldName TextInput.But. После ввода нового имени я не могу получить это новое имя в TreeItemRenderer.Пожалуйста, помогите мне

Заранее спасибо:)

1 Ответ

0 голосов
/ 09 мая 2011

У вас есть два способа достичь своей цели:

1) Передать текущий узел XML в ваш диалог вместо чистой метки (как в вашей текущей реализации).Когда пользователь нажимает Ok, просто замените старую метку в XML новой, как в следующем примере кода:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application layout="absolute" xmlns:mx="http://www.adobe.com/2006/mxml">
    <mx:Script>
    <![CDATA[
        [Bindable]
        private var rawData:XML = <tree><parent label="Parent1"><child label="Child1"/><child label="Child2"/></parent>
                <parent label="Parent2"><child label="Child3"/><child label="Child4"/></parent></tree>;

        private function displayLabel(node:XML):String
        {
            return node.@label;
        }
    ]]>
    </mx:Script>
    <mx:VBox horizontalCenter="0" verticalCenter="0">
        <mx:Tree dataProvider="{rawData}" height="300" id="tree" labelFunction="displayLabel" showRoot="false"
            width="300" />
        <mx:HBox enabled="{tree.selectedItem}">
            <mx:TextInput id="labelEdit" text="{tree.selectedItem ? tree.selectedItem.@label : ''}" />
            <mx:Button click="tree.selectedItem.@label = labelEdit.text" label="Apply" />
        </mx:HBox>
    </mx:VBox>
</mx:Application>

2) Создайте пользовательский класс событий с полем label и событиями "labelSubmit" и "labelCancel" изапустить его из диалогового окна, передав новое значение метки с событием "labelSubmit".И установите новую метку для узла XML (как описано выше) в обработчике событий диалога.

...