Reputation: 19788
I have a custom DataGrid to which I would like to add a custom menu:
public function MyCustomDataGrid() {
super();
init();
}
private function init():void {
var _copyElementMenuItem:ContextMenuItem = new ContextMenuItem("Copier Donnée");
_copyElementMenuItem.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, handleCopyData);
this.contextMenu = new ContextMenu();
contextMenu.hideBuiltInItems();
contextMenu.customItems = [ _copyElementMenuItem ];
}
The problem is that my custom menu item is never shown, and I allways end up with the standard flash context menu:
What am I missing ? how can I trouble shoot this ? Thank you.
Upvotes: 0
Views: 232
Reputation: 4684
It works by me. Have a look at my code.
//Application
<?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"
minWidth="955" minHeight="600" xmlns:custommenu="com.custommenu.*">
<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
[Bindable]private var collection:ArrayCollection = new ArrayCollection([
{field01:"field01", field02:"field02"},
{field01:"field01", field02:"field02"}
]);
]]>
</fx:Script>
<s:VGroup x="20" y="20">
<custommenu:MyCustomDataGrid
dataProvider="{collection}"
width="200" height="100">
<custommenu:columns>
<s:ArrayList>
<s:GridColumn dataField="field01" headerText="Field 1"/>
<s:GridColumn dataField="field02" headerText="Field 2"/>
</s:ArrayList>
</custommenu:columns>
</custommenu:MyCustomDataGrid>
</s:VGroup>
</s:Application>
//MyCustomDataGrid
<?xml version="1.0" encoding="utf-8"?>
<s:DataGrid xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" width="400" height="300"
creationComplete="init()">
<fx:Script>
<![CDATA[
import mx.controls.Alert;
protected function init():void
{
var _copyElementMenuItem:ContextMenuItem = new ContextMenuItem("Copier Donnée");
_copyElementMenuItem.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, handleCopyData);
this.contextMenu = new ContextMenu();
contextMenu.hideBuiltInItems();
contextMenu.customItems = [ _copyElementMenuItem ];
}
private function handleCopyData(evt:ContextMenuEvent):void
{
Alert.show("Hello!");
}
]]>
</fx:Script>
</s:DataGrid>
Upvotes: 1