Bonjour,
Pour poser les éléments:
J'ai un grid
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
var grid = new Ext.grid.GridPanel({
		region:'center',
		margins:'0 0 2 0',
                         store: store,
                         columns: [
                         {header: "Reference Produit", width: 200, dataIndex: 'productReference', sortable: true},
	            {header: "Désignation", width: 300, dataIndex: 'productlibel', sortable: false},
                         {header: "Categorie", width: 180, dataIndex: 'categorie', sortable: true},
                        {header: "Statut", width: 115, dataIndex: 'statut', sortable: true},
                        {header: "Prix", width: 100, dataIndex: 'prix', sortable: true}
        ],
        width:540,
        height:200,
		listeners: { cellcontextmenu : onContextMenu }
    });
Dans le listeners de ma grille, lorsque je fais un click droit, un menu apparaît dont le code est ci-dessous. Appel de la fonction onContextMenu suite à l'event cellcontextmenu.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 
 
function onContextMenu(grid, rowIndex, cellIndex, e) {
GLOBAL_STORE_GRID = grid.getStore().getAt(rowIndex).get('productReference');
 
 if (!this.contextMenu) {
	this.contextMenu = new Ext.menu.Menu({
	id: 'gridCtxMenu',
	items: [{
	listeners: {click: function(){
		   alert(GLOBAL_STORE_GRID);
	             }},
	text: 'Ajouter',
	iconCls: 'grid_add_row'
	},{
	listeners: {click: onContextMenuModify},
	text: 'Modifier',
	iconCls: 'grid_edit_row'
	},{
	listeners: {click: onContextMenuDelete},
	text: 'Supprimer',
	iconCls: 'grid_delete_row'
	}]
       });	
  }
e.stopEvent();
var xy = e.getXY();
this.contextMenu.showAt(xy);
 
}
Depuis le corps de ma fonction onContextMenu vers le Menu, je souhaite passer l'objet grid. Et c'est là que cela coince! Je n'y arrive pas. La seule solution que j'ai trouvé est de déclarer une variable globale qui est GLOBAL_STORE_GRID. Ce moyen n'est pas très propre. Faut-il passer par un handler comme j'ai pu comprendre ou quelle est la meilleur solution ?

D'avance merci pour votre aide.
a+