EasyUI Forum
April 16, 2024, 05:15:31 AM *
Welcome, Guest. Please login or register.

Login with username, password and session length
News:
 
   Home   Help Search Login Register  
Pages: [1]
  Print  
Author Topic: onHeaderContextMenu for multiple datagrid  (Read 3768 times)
Alfred
Full Member
***
Posts: 134


-Licensed User-


View Profile
« on: April 10, 2018, 11:17:00 PM »

I used the following code I found on this forum for hiding and showing column:

Code:
var actcmenu;
function createColumnMenu(dgName){
    actcmenu = $('<div/>').appendTo('body');
    actcmenu.menu({
        onClick: function(item){
            if (item.iconCls == 'icon-ok'){
                $('#'+dgName+'').datagrid('hideColumn', item.name);
                    actcmenu.menu('setIcon', {
                        target: item.target,
                            iconCls: 'icon-empty'
                    });
            } else {
                $('#'+dgName+'').datagrid('showColumn', item.name);
                    actcmenu.menu('setIcon', {
                        target: item.target,
                        iconCls: 'icon-ok'
                    });
            }
        }
    });
    var fields = $('#'+dgName+'').datagrid('getColumnFields');
    for(var i=0; i<fields.length; i++){
        var field = fields[i];
        var col = $('#'+dgName+'').datagrid('getColumnOption', field);
            actcmenu.menu('appendItem', {
                text: col.title,
                name: field,
                iconCls: 'icon-ok'
            });
        }
}

I want to implement this code in every datagrid I have. Can anyone, especially stworthy can help me put this function into a reusable one.
Thanks
Logged
stworthy
Administrator
Hero Member
*****
Posts: 3581


View Profile Email
« Reply #1 on: April 11, 2018, 02:16:11 AM »

The extended method 'columnMenu' returns the column menu that can be used to show or hide a column. This method can be found in this example https://www.jeasyui.com/easyui/demo/datagrid/contextmenu.html
Code:
$('#dg').datagrid({
onHeaderContextMenu: function(e, field){
e.preventDefault();
$(this).datagrid('columnMenu').menu('show', {
left:e.pageX,
top:e.pageY
});
}
})
Logged
Alfred
Full Member
***
Posts: 134


-Licensed User-


View Profile
« Reply #2 on: April 11, 2018, 05:59:39 AM »

Thank you very much. I am using the following codes but I quickly removed and use your answer:

Code:
var createGridHeaderContextMenu = function(e, field) {
    e.preventDefault();
    var grid = $(this);/* The grid itself */
    var headerContextMenu = this.headerContextMenu;/* Column header menu object on Grid */
    var okCls = 'tree-checkbox1';//Selected
    var emptyCls = 'tree-checkbox0';//Cancel
    if (!headerContextMenu) {
        var tmenu = $('<div style="width:180px;"></div>').appendTo('body');
        var fields = grid.datagrid('getColumnFields');
        for ( var i = 0; i <fields.length; i++) {
            var fildOption = grid.datagrid('getColumnOption', fields[i]);
            if (!fildOption.hidden) {
                $('<div iconCls="'+okCls+'" field="' + fields[i] + '"/>').html('<span style="font-size:14px">'+fildOption.title+'</span>').appendTo(tmenu);
            } else {
                $('<div iconCls="'+emptyCls+'" field="' + fields[i] + '"/>').html('<span style="font-size:14px">'+fildOption.title+'</span>').appendTo(tmenu);
            }
        }
        headerContextMenu = this.headerContextMenu = tmenu.menu({
            onClick : function(item) {
                var field = $(item.target).attr('field');
                if (item.iconCls == okCls) {
                    grid.datagrid('hideColumn', field);
                    $(this).menu('setIcon', {
                        target : item.target,
                        iconCls : emptyCls
                    });
                } else {
                    grid.datagrid('showColumn', field);
                    $(this).menu('setIcon', {
                        target : item.target,
                        iconCls : okCls
                    });
                }
            }
        });
    }
    headerContextMenu.menu('show', {
        left : e.pageX,
        top : e.pageY
    });
};
$.fn.datagrid.defaults.onHeaderContextMenu = createGridHeaderContextMenu;
Logged
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines Valid XHTML 1.0! Valid CSS!