SMART datagrid v.1 > Examples

Back  Forward

Grid Context Menu  Example

可以通过拦截浏览器的上下文菜单事件,显示网格上下文菜单。 

首先,通过调用GridBase.setContextMenu,替代浏览器上下文菜单,设置将要显示的网格上下文菜单。 另外,可以通过GridBase.setDefaultContextMenu,将刚注册的菜单设置为基本菜单。 当调用setContextMenu时,如果没有指定菜单,就会运行基本菜单。 

Code -1
    var menu = grdMain.setContextMenu([{
        label: "Add Row",
        callback: function () {
            grdMain.insert();
        }
    },
        ...
    ]);
    grdMain.setDefaultContextMenu(menu);

定义菜单的方法,请参考菜单概述帮助。 

Grid - 1
rows

如果想根据鼠标点击的位置而显示不同的菜单组或不显示菜单,可以使用onContextMenuPopup事件。 如果在这个事件处理器中明确返回false,就不会显示菜单,而是会显示浏览器上下文菜单。 

另外,也可以在处理器中,通过调用GridBase.setContextMenu而变更将要显示的菜单。 这时,可以指定通过GridBase.registerPopupMenu而注册的菜单。 

Code -2
    grdMain.onContextMenuPopup = function (grid, x, y) {
        var index = grid.pointToIndex(x, y);

        if (index && index.column && index.column.name() == "LoanNumber") {
            // 运行临时菜单。
            grid.setContextMenu(menu2);
        } else if (index && index.column && index.column.name() == "Country") {
            // 如果返回false,就会替代网格菜单,运行浏览器菜单。
            return false;
        } else if (index && index.column && index.column.name() == "Currency") {
            // 运行通过registerPopupMenu()注册的菜单。
            return grid.setContextMenu('menu1');
        } else {
            // 运行默认上下文菜单。
            grid.setContextMenu(null);
        }
    };

当点击菜单项时,如果在菜单项中已有设置callback,就会运行callback,否则就会触发GridBase.onContextMenuClicked事件。 


查看源代码 JSP 

See Also
菜单概述
GridBase.setContextMenu
GridBase.setDefaultContextMenu
GridBase.onContextMenuPopup
GridBase.onContextMenuClicked
GridBase.registerPopupMenu
GridBase.unregisterPopupMenu
GridBase.getPopupMenu
GridBase.pointToIndex
exportToExcel
Examples
列弹出菜单