我的 Flex 应用程序中有一个树控件,我想在双击树项时对其进行编辑。我找到了属性 doubleClickEnabled="true"、doubleClick="startEditMode()" 和 editable="true"。使用这些功能,我可以检测到双击,并且可以根据双击将可编辑属性更改为 true。
问题是,在我双击一个项目后,我必须再次单击才能真正进入编辑模式。这似乎根本不直观......
有人知道该问题的解决方案吗?
谢谢马库斯
我的 Flex 应用程序中有一个树控件,我想在双击树项时对其进行编辑。我找到了属性 doubleClickEnabled="true"、doubleClick="startEditMode()" 和 editable="true"。使用这些功能,我可以检测到双击,并且可以根据双击将可编辑属性更改为 true。
问题是,在我双击一个项目后,我必须再次单击才能真正进入编辑模式。这似乎根本不直观......
有人知道该问题的解决方案吗?
谢谢马库斯
马克鲁斯,
查看发布在以下位置的解决方案:
http://www.sephiroth.it/weblog/archives/2009/12/flex_3_tree_double-click_to_edit.php
应该正是您正在寻找的!
-大卫
http://tush.wordpress.com/2008/10/06/flex-double-click-to-edit-functionality-for-list-control/
This works like a charm... just tried it.
一个List
(的超类)在被点击并设置为Tree
时进入编辑模式。在您的情况下,当您单击它时,它是 false - 它仅在事件处理程序中设置为 true。所以这是预期的行为,尽管在这种情况下不需要。itemRenderer
editable
true
editable
doubleClick
试试这个click
:itemRenderer
在dobleClick
设置editable
为true
.
clickedItemRenderer.dispatchEvent(new MouseEvent(MouseEvent.CLICK));
我没有对此进行测试,但我认为这可能会让 flex 相信在设置editable
为 true 后再次点击了该项目。如果这不起作用,请发布一个工作代码,以便我们可以对其进行调整并尝试提出解决方案。
这是对我有用的解决方案:
private var ignoreEditing:Boolean = true;
protected function doubleClickHandler(event: MouseEvent ):void
{
ignoreEditing = false;
}
protected function itemEditBeginningHandler(event:ListEvent):void
{
if(ignoreEditing){
event.preventDefault();
}
else{
ignoreEditing = true;
}
}
<mx:Tree
doubleClickEnabled="true"
editable="true"
itemEditBegin="itemEditBeginningHandler(event)"
doubleClick="doubleClickHandler(event)"
/>