Apache flex 如何根据另一个itemRenderer中的操作更改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

我有一个带有ItemRenderer的DataGridColumn,它扩展了Box组件。默认显示为文本组件。当用户单击文本组件时,我将状态更改为添加一个PopUpMenuButton子项,并使文本组件不可见。这个很好用。但是,我只想允许一次在DataGrid中显示一个PopUpMenuButton(类似于itemEditor的工作方式)。我不想使用itemEditor,因为我在这个实例中尝试使用它时遇到了太多问题

我正在我的itemRenderer中实现IDropInListItemRenderer,以便访问listData属性,它将为我提供所有者(DataGrid),但我不知道如何“关闭”DataGrid中其他itemRenderer的“编辑”状态

我怎样才能做到这一点


谢谢

我们开始了。我只是在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);
}