dojox.grid.DataGrid extension: Allowing browser context menu
Grid example with un-disabled right click. Requested by mjv_ (129.42.208.*) on freenode.
HTML
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/dojo/1.5/dijit/themes/claro/claro.css">
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/dojo/1.5/dojox/grid/resources/Grid.css">
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/dojo/1.5/dojox/grid/resources/claroGrid.css">
<div id="grid"></div>
CSS
#grid { height: 500px; }
JavaScript
dojo.require('dojo.data.ItemFileReadStore');
dojo.require('dojox.grid.DataGrid');
dojo.ready(function() {
dojo.declare('kgf.dojox.grid._FocusManager', dojox.grid._FocusManager, {
//extension to remove yet another contextmenu dojo.stopEvent
doContextMenu: function() {}
});
dojo.declare('kgf.dojox.grid.DataGrid', dojox.grid.DataGrid, {
createManagers: function() {
this.rows = new dojox.grid._RowManager(this);
//hook up our extended _FocusManager
this.focus = new kgf.dojox.grid._FocusManager(this);
this.edit = new dojox.grid._EditManager(this);
},
//clobber original callbacks that call dojo.stopEvent
onRowContextMenu: function(e) {},
onHeaderContextMenu: function(e) {}
});
ifrs = new dojo.data.ItemFileReadStore({data: {
identifier: 'id',
label: 'name',
items: [
{id: 1, name: 'foo'},
{id: 2, name: 'bar'}
]
}});
var grid = new kgf.dojox.grid.DataGrid({
id: 'grid',
store: ifrs,
structure: [
{ field: 'id', name: 'ID', width: '10%' },
{ field: 'name', name: 'Name', width: '90%' }
]
}, dojo.byId('grid'));
grid.startup();
});