在弹性树项呈示器中弹出

时间:2011-05-09 09:08:02

标签: flex actionscript flex3

我有一个带有TreeItemRenderer的mx:tree,如下所示。

Parent1(删除|重命名)
      Child1
      CHILD2
Parent2(删除|重命名)
      Child3
      Child4

删除和重命名是链接按钮

现在当我点击重命名时,popUp应显示为

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

         OK | CANCEL Buttons 

Afetr输入新名称,单击“确定”,弹出窗口应该关闭,需要在treeItemRenderer中获取值。

我有在TreeItemRenderer中重命名Parent1的逻辑,并且在输入新名称后我能够在弹出的OldName TextInput.But中获取Parent1我无法在TreeItemRenderer中获取该新名称。请帮助我

提前致谢:)

1 个答案:

答案 0 :(得分:0)

您有两种方法可以实现目标:

1)将当前XML节点传递给对话框而不是纯标签(如当前实现中那样)。当用户按“确定”时,只需将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节点(如上所述)。