0

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

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

我怎样才能做到这一点?

谢谢。

4

1 回答 1

0

开始了。我只是在 listData.owner 中添加了一个更改事件的侦听器——如果它被触发,我将 currentState 更新为 null。奇迹般有效。比尝试访问列中的 itemRenderers 并将它们全部重置要容易得多。在性能上也更好。

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);
}
于 2008-12-17T19:14:59.653 回答