Apache flex 如何根据另一个itemRenderer中的操作更改itemRenderer中的状态?
我有一个带有ItemRenderer的DataGridColumn,它扩展了Box组件。默认显示为文本组件。当用户单击文本组件时,我将状态更改为添加一个PopUpMenuButton子项,并使文本组件不可见。这个很好用。但是,我只想允许一次在DataGrid中显示一个PopUpMenuButton(类似于itemEditor的工作方式)。我不想使用itemEditor,因为我在这个实例中尝试使用它时遇到了太多问题 我正在我的itemRenderer中实现IDropInListItemRenderer,以便访问listData属性,它将为我提供所有者(DataGrid),但我不知道如何“关闭”DataGrid中其他itemRenderer的“编辑”状态 我怎样才能做到这一点Apache flex 如何根据另一个itemRenderer中的操作更改itemRenderer中的状态?,apache-flex,actionscript,datagrid,itemrenderer,Apache Flex,Actionscript,Datagrid,Itemrenderer,我有一个带有ItemRenderer的DataGridColumn,它扩展了Box组件。默认显示为文本组件。当用户单击文本组件时,我将状态更改为添加一个PopUpMenuButton子项,并使文本组件不可见。这个很好用。但是,我只想允许一次在DataGrid中显示一个PopUpMenuButton(类似于itemEditor的工作方式)。我不想使用itemEditor,因为我在这个实例中尝试使用它时遇到了太多问题 我正在我的itemRenderer中实现IDropInListItemRender
谢谢 我们开始了。我只是在listData.owner中为更改事件添加了一个侦听器——如果触发了它,我会将currentState更新为null。工作起来很有魅力。比尝试访问列中的ItemRenders并全部重置它们容易得多。性能也更好
private function label_clickHandler():void
{
showEditor();
}
private function showEditor():void
{
this.currentState = "editingMode";
var ownerListBase:ListBase = ListBase(listData.owner);
ownerListBase.addEventListener(ListEvent.CHANGE, ownerListBase_changeHandler);
}
private function ownerListBase_changeHandler(event:ListEvent):void
{
this.currentState = null;
var ownerListBase:ListBase = ListBase(listData.owner);
ownerListBase.removeEventListener(ListEvent.CHANGE, ownerListBase_changeHandler);
}