Another handy feature that you can add to Gridx is a popup menu from the column headers. In this post, I’ll show how to build a menu and add it to the grid.
Gridx Series
Gridx in XPages — Entire Series
Include the HeaderMenu Module
As always, you have to include the required gridx module (gridx.modules.HeaderMenu
) and add it to the grid object’s modules list.
modules: [ Resizer, NestedSort, Filter, FilterBar, QuickFilter, VirtualVScroller, Persist, HeaderMenu ]
Build the Menu
Create a new dijit.Menu
object to build the menu. You don’t need to add any resources to the page because, even though dijit.Menu
and dijit.MenuItem
are not automatically made available in XPages, they are made available by Gridx.
This code creates a menu and adds 3 items to it. Each item has a simple onClick
handler that displays an alert.
var headerContextMenu = new dijit.Menu(); headerContextMenu.addChild(new dijit.MenuItem({ id: 'menu1', label: 'Option 1', onClick: function() { alert('Clicked menu item: ' + this.label); } })); headerContextMenu.addChild(new dijit.MenuItem({ id: 'menu2', label: 'Option 2', onClick: function() { alert('Clicked menu item: ' + this.label); } })); headerContextMenu.addChild(new dijit.MenuItem({ id: 'menu3', label: 'Option 3', onClick: function() { alert('Clicked menu item: ' + this.label); } }));
Add Menu to Column Definition
Now that the menu is ready, all you have to do is add it to one or more columns via the menu
attribute.
var columns = [ { id: 'first', field: 'firstname', name: 'First', width: '70px', menu:headerContextMenu } ]
You can add the same menu to all columns or you can create different menus for different columns.
Selecting a Menu Option
When you hover over a column header of a column that has a menu, a solid downward-facing black triangle is visible on the right-hand side of the column header. (Note: The mouse cursor isn’t in the screen shot, but it was hovered over the column header.)
Here’s the strange part — the interface is not intuitive; left-clicking on the triangle does nothing but select the triangle image.
The menu will be displayed when your right-click on the triangle. (See screen shot near beginning of the post.) Then you can left-click on a menu option to select it.
