如何根据另一个itemRenderer中的操作更改itemRenderer中的State?

时间:2008-12-17 16:19:47

标签: flex actionscript datagrid itemrenderer

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

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

我该如何做到这一点?

感谢。

1 个答案:

答案 0 :(得分:0)

我们走了。我只是在listData.owner中添加了一个Listener for Change Events - 如果它被触发,我将currentState更新为null。奇迹般有效。比试图访问列中的itemRenderer并重置它们要容易得多。性能也更好。

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);
}
相关问题