согните contextmenu ссылку компонента

У меня есть a DataGrid с пользовательским itemRenderer (Холст), который имеет контекстное меню при его щелчке правой кнопкой. Я пытаюсь получить данные itemRenderer.

Я пытался найти что-то в событии и переменных. Я также попробовал FlexNativeMenu на RIGHT_MOUSE_CLICK. Но я не нашел выхода.

Помогите мне в получении данных itemrenderer или его экземпляра.

1
задан Amarghosh 7 July 2010 в 06:35
поделиться

2 ответа

Свойство contextMenuOwner объекта ContextMenuEvent , отправленное ContextMenu , будет указывать на интересующий объект itemRenderer .

var renderer:Canvas = Canvas(event.contextMenuOwner);
trace(renderer.data);
trace(renderer.data.something);
1
ответ дан 2 September 2019 в 23:14
поделиться

Используйте ContextMenuEvent.mouseTarget:

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" 
    xmlns:mx="library://ns.adobe.com/flex/mx" initialize="init();">

    <fx:Script>
    <![CDATA[
        import mx.core.IDataRenderer;

        private function init():void
        {
            var dataGridContextMenu:ContextMenu = new ContextMenu();
            dataGridContextMenu.hideBuiltInItems();
            dataGridContextMenu.addEventListener(ContextMenuEvent.MENU_SELECT,
                menuSelectHandler);
            dataGrid.contextMenu = dataGridContextMenu;
        }

        private function menuSelectHandler(event:ContextMenuEvent):void
        {
            var displayObject:DisplayObject = event.mouseTarget as DisplayObject;
            while (!(displayObject is IDataRenderer) && !(displayObject == dataGrid))
            {
                displayObject = displayObject.parent;
            }
            var data:Object;
            if (displayObject is IDataRenderer)
                data = IDataRenderer(displayObject).data;

            var customItems:Array = [];
            if (data)
            {
                var contextMenuItem:ContextMenuItem = new ContextMenuItem(data.name, false, false);
                customItems.push(contextMenuItem);
            }

            var menu:ContextMenu = ContextMenu(event.target);
            menu.customItems = customItems;
        }

    ]]>
    </fx:Script>

    <mx:DataGrid id="dataGrid">
        <mx:dataProvider>
            <s:ArrayCollection>
                <fx:Object name="Mike" age="21"/>
                <fx:Object name="Juss" age="19"/>
            </s:ArrayCollection>
        </mx:dataProvider>
    </mx:DataGrid>

</s:Application>
1
ответ дан 2 September 2019 в 23:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: