可以通过在AG Grid上注册通用菜单选项卡回调函数来自定义该菜单。但是,如果在企业版中进行自定义,您可能会遇到回调函数没有被调用的情况。这可能是由于选项卡本身已经被定制化导致的。
为了解决此问题,您需要将您的回调函数附加到“menuItemComponent”的“afterGuiAttached”时期。代码示例如下:
import { AllCommunityModules } from '@ag-grid-community/all-modules';
const menuItemComponent = (params) => {
const eMenu = document.createElement('div');
const template = `
Do Something Special
`;
eMenu.innerHTML = template;
const onClickHandler = () => {
params.api.deselectAll();
params.api.refreshCells({force: true});
};
eMenu.addEventListener('click', onClickHandler);
params.onClose = () => {
eMenu.removeEventListener('click', onClickHandler);
};
params.showMenu(eMenu);
};
const columnDefs = [
{ field: 'make' },
{ field: 'model' },
{ field: 'price' }
];
const gridOptions = {
rowSelection: 'multiple',
columnDefs: columnDefs,
animateRows: true,
modules: AllCommunityModules,
getMainMenuItems: (params) => {
const originalMenuItems = params.defaultItems;
const customMenuItems = [
{
name: 'customItem',
action: function () {
console.log('customItem clicked');
},
cssClasses: ['fa fa-bomb'],
tooltip: 'Custom Item'
}
];
return customMenuItems.concat(originalMenuItems);
},
components: {
menuItemComponent
},
processRowPostCreate: (params) => {
params.eRow.addEventListener('contextmenu', (event) => {
event.preventDefault();
event.stopPropagation();
setTimeout(() => {
params.api.showPopupMenu(params.column.getColId(), event);
}, 0);
});
}
};
const gridDiv = document.querySelector('#myGrid');
new agGrid.Grid(gridDiv, gridOptions);
agGrid.simpleHttpRequest({ url: 'https://api.myjson.com/bins/15psn9' })
.then(function (data) {
gridOptions.api.setRowData(data);
});
在这个示例中,我们向AG Grid添加了我们的菜单项目,并注册了我们的menuItemComponent回调函数。这个例子允许您