为datagrid、treegrid增加右键表头菜单,用于显示或隐藏列,注意:冻结列不在此菜单中

时间:2023-03-10 02:04:18
为datagrid、treegrid增加右键表头菜单,用于显示或隐藏列,注意:冻结列不在此菜单中
 var createGridHeaderContextMenu = function(e, field) {
e.preventDefault();
var grid = $(this);/* grid本身 */
var headerContextMenu = this.headerContextMenu;/* grid上的列头菜单对象 */
if (!headerContextMenu) {
var tmenu = $('<div style="width:100px;"></div>').appendTo('body');
var fields = grid.datagrid('getColumnFields');
console.log('id='+grid.attr('id'));
storage=$.localStorage;if(!storage)storage=$.cookieStorage;
var cols = storage.get(grid.attr('id')+'hiddenColumns');
var init=true;
if(cols){
init=false;
}
for ( var i = 0; i < fields.length; i++) {
var fildOption = grid.datagrid('getColumnOption', fields[i]);
console.log(fields[i]+'='+fildOption.hidden);
if (!fildOption.hidden||fildOption.hidden==false) {
$('<div iconCls="icon-ok" field="' + fields[i] + '"/>').html(fildOption.title).appendTo(tmenu);
} else {
if(init==false){
for(var j=0;j<cols.length;j++){
if(cols[j].field==fields[i]&&cols[j].visible!=false){
//console.log(cols[j].field+'=='+cols[j].visible);
$('<div iconCls="icon-empty" field="' + fields[i] + '"/>').html(fildOption.title).appendTo(tmenu);
}
}
}
}
}
headerContextMenu = this.headerContextMenu = tmenu.menu({
onClick : function(item) {
var field = $(item.target).attr('field');
if (item.iconCls == 'icon-ok') {
grid.datagrid('hideColumn', field);
$(this).menu('setIcon', {
target : item.target,
iconCls : 'icon-empty'
});
} else if (item.iconCls == 'icon-empty') {
grid.datagrid('showColumn', field);
$(this).menu('setIcon', {
target : item.target,
iconCls : 'icon-ok'
});
}else{
//恢复表头 }
}
});
}
headerContextMenu.menu('show', {
left : e.pageX,
top : e.pageY
});
}; //$.fn.datagrid.defaults.onHeaderContextMenu = createGridHeaderContextMenu; //屏蔽掉dagagrid表头右键隐藏列的功能
$.fn.treegrid.defaults.onHeaderContextMenu = createGridHeaderContextMenu;