2011-07-19 183 views
2

下面是我的问题的图像: 我正在使用组合框作为Datagrid ItemEditor(不只是渲染器,我的渲染器是标签,双击单元格使组合框可见,情​​况也是如此与所有项目编辑器)Flex:ItemEditor失去焦点!

现在,在组合框中选择一个条目是没有问题的。但我的问题是,只有当我选择“果”,而这又弹开称为另一层“选择果”对话框

问题:

如何保持项目编辑器,而重点是在层上;现在,只要我点击水果,我的处理程序弹出“选择水果”对话框,焦点在图层上。一旦焦点离开编辑器,ItemEditor消失并返回ItemRenderer标签。

我想保持ItemEditor活着!我应该在哪里连接诸如开始/结束ItemEdit等事件?

Flex: Item editor, losing focus!

+1

我们可以看到一些代码吗?我可能只是用一个自定义的编辑器创建一个项目渲染器,而不是使用内置的项目编辑器,那么你完全可以控制显示的内容和时间(毫无疑问,你将在那里放置一些聪明的状态);) – Nate

回答

1

您可以通过侦听DataGridEvent.ITEM_EDIT_END保持你的itemEditor活着。然后你有更多的控制权去做你想做的事情。有些FYI从我的博客:

DataGridEvent.ITEM_EDIT_END - 基于列表控件的默认事件侦听器将

1)使用.editorDataFrield属性deterine的财产 - 当焦点从细胞中移除 调度项目编辑器来存储编辑的数据;在默认的TextInput控件的项目编辑器中,“text”属性将包含新数据。

2)调用destoryItemEditor()根据事件

  • 您可以通过使用event.preventDefault()中断基于列表默认控件的默认事件侦听器的原因

一)修改物品编辑器返回的数据

b)检查/验证输入到物品编辑器的数据;如果数据不正确,你可以停止的Flex传递数据从项目编辑器返回到基于列表的控件

http://knowledge.lapasa.net/?p=153

0

尝试失去你的itemEditor的焦点。 Goto Combo Box Change Listener

protected function comboBox_changeHandler(event:ListEvent):void 
{ 
// set focus out event on datagrid. Its like clicking outside the datagrid 
event.target.parent.parent.parent.dispatchEvent(new FocusEvent(FocusEvent.FOCUS_OUT); 

}