Gestire tasto destro del mouse in spark datagrid

Flash, Flex Soft! Commenta l'articolo


Non ho trovato nulla di equivalente nel datagrid di spark ad itemRollover che avevo invece in mx:datagrid.
Però mi serviva qualcosa che mi permettesse di avere la riga selezionata con il tasto destro del mouse, come ad esempio in un contextmenu.
Vediamo come. Creiamo prima un menu contestuale:

private var myContextMenu:ContextMenu = new ContextMenu();

var menuItemElimina:ContextMenuItem = new ContextMenuItem('Elimina');
menuItemElimina.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, eliminaContatto);
				
var menuItemEliminaSelezionati: ContextMenuItem = new ContextMenuItem('Elimina selezionati');
menuItemEliminaSelezionati.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, eliminaContatto);
				
myContextMenu.customItems = [_menuItemElimina, _menuItemEliminaSelezionati ];
myContextMenu.hideBuiltInItems();
dgCercaContatto.contextMenu = myContextMenu;


Si prende l’item selezionato dal mouse e si scorre fino ad ottenere l’oggetto caricato nel datagrid.

private function onContextMenuOpen(event:MouseEvent):void { 
				dgCercaContatto.selectedIndex = -1;
				if (event.target is DefaultGridItemRenderer) { 
					var r:DefaultGridItemRenderer = event.target as DefaultGridItemRenderer; 
					var c:EventiContatto = r.data as EventiContatto;
					var selectedIndex: int = _listContatti.getItemIndex(c);
					dgCercaContatto.selectedIndex = selectedIndex;
				} 
				if (dgCercaContatto.selectedIndex > -1) {
					_menuItemElimina.enabled = true;
					_menuItemEliminaSelezionati.enabled = false;
				}
				else {
					_menuItemElimina.enabled = false;
					_menuItemEliminaSelezionati.enabled = false;
				}
			}

Il datagrid conterrà il metodo onContextMenuOpen.

<s:DataGrid id="dgCercaContatto" dataProvider="{_listContatti}" contextMenu="onContextMenuOpen(event)" >

Buon lavoro.

Scrivi un Commento

Home | Graffiti e Disegni | Educazione | Chi siamo | Blog | Progetti | Contatti
RSS Feed Comments RSS Accedi