Bonjour,
Pour poser les éléments:
J'ai un grid
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 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 } });
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 ?
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); }
D'avance merci pour votre aide.
a+
Partager