Articles in this section
Category / Section

How to add custom context menu items in TreeGrid

2 mins read

It is possible to include a custom menu item in TreeGrid context menu by using contextMenuOpen client side event. And this event will be triggered only on enabling the context menu using contextMenuSettings.showContextMenu.

The below properties are used to include a custom menu item,

headerText - Text to be displayed for the custom menu item

menuId - Provides ID field for the created DOM element for custom menu item

iconPath - Image location for menu item

eventHandler - Event for binding actions to the custom menu item click

iconClass - CSS class for menu item’s icon

parentMenuId - Parent menu ID for displaying the custom menu item as sub item

disable - To enable/disable the custom menu item

 

The below code example explains about how to include custom menu item in TreeGrid:

<div id="TreeGridContainer" style="height:400px;width:100%"></div>   
<script type="text/javascript">
$(function () {
            $("#TreeGridContainer").ejTreeGrid({
                //...
                dataSource: projectData,
                contextMenuSettings: {
                    showContextMenu: true,
                    contextMenuItems: ["add", "edit", "delete"]
                },
                contextMenuOpen: contextMenuOpen,
          })
        }); 
function contextMenuOpen(args) {
            //To add the custom context menu item in Treegrid
            var isExpandable = true, isCollapsable = true, data;
            data = args.item;
            if (data && data.hasChildRecords) {
                if (data.expanded)
                    isExpandable = false;
                else
                    isCollapsable = false;
            } else {
                isExpandable = false;
                isCollapsable = false;
            }
            var aboveMenu = args.contextMenuItems.filter(function (val) { return val.menuId == "Above" }),
              belowMenu = args.contextMenuItems.filter(function (val) { return val.menuId == "Below" });
            aboveMenu[0].iconClass = "e-aboveIcon";
            belowMenu[0].iconClass = "e-belowIcon";
            //To add the customized menu items in context menu
            var contextMenuItems = [{
                headerText: "Top",
                eventHandler: customMenuAddHandler,
                menuId: "Top",
                parentMenuId: "Add",
                iconClass: "e-topIcon"
 
            }, {
                headerText: "Bottom",
                menuId: "Bottom",
                parentMenuId: "Add",
                eventHandler: customMenuAddHandler,
                iconClass: "e-bottomIcon"
            },
            {
                headerText: "Child",
                menuId: "Child",
                parentMenuId: "Add",
                eventHandler: customMenuAddHandler,
                iconClass: "e-childIcon"
            },
             {
                 headerText: "Expand",
                 menuId: "Expand",
                 eventHandler: customMenuExpandCollapseHandler,
                 iconClass: "e-expandIcon",
                 disable: !isExpandable
             },
    {
                 headerText: "Collapse",
                 menuId: "Collapse",
                 eventHandler: customMenuExpandCollapseHandler,
                 iconClass: "e-collapseIcon",
                 disable: !isCollapsable
             }
            ];
           args.contextMenuItems.push.apply(args.contextMenuItems, contextMenuItems);
        }
        function customMenuAddHandler(args) {
            //To bind the action to the custom context menu items
            var currentMenuId = args.menuId,
                tempData = args.data && $.extend({}, args.data.item), rowPosition;
            if (currentMenuId == "Top") {
                rowPosition = ej.TreeGrid.RowPosition.Top;
            }
            else if (currentMenuId == "Bottom") {
                rowPosition = ej.TreeGrid.RowPosition.Bottom;
            }
            else if (currentMenuId == "Child") {
                rowPosition = ej.TreeGrid.RowPosition.Child;
            }
            this.addRow(tempData, rowPosition);
        }
        function customMenuExpandCollapseHandler(args) {
            var currentMenuId = args.menuId, expandCollapseArgs = {};
            expandCollapseArgs.data = args.data;
            if (currentMenuId === "Expand")
                expandCollapseArgs.expanded = true;
            else
                expandCollapseArgs.expanded = false;
            ej.TreeGrid.sendExpandCollapseRequest(this, expandCollapseArgs);
        }
</script>

 

Render custom context menu items in tree grid.

A sample to render the custom context menu items in TreeGrid is available in the following link,

Sample

 

 

 

 

 

 

 

 

Did you find this information helpful?
Yes
No
Help us improve this page
Please provide feedback or comments
Comments
Please sign in to leave a comment
Access denied
Access denied