动态加载菜单原创
金蝶云社区-n_m
n_m
1人赞赏了该文章 1,410次浏览 未经作者许可,禁止转载编辑于2020年03月11日 15:10:08

1、在设计界面加入导航栏

2、在plugin处理初始化加载和点击事件


//注册监听事件

public void registerListener(EventObject e) {

super.registerListener(e);

TreeMenu navigationBar = (TreeMenu)this.getView().getControl("navigationbar");

navigationBar.addTreeMenuClickListener(this);

this.addClickListeners(new String[]{"navigationbar"});

}


//初始化绑定菜单数据

public void afterBindData(EventObject e) {

String userId = RequestContext.get().getUserId();

String appNum = this.getView().getFormShowParameter().getAppId();

List markedMenuList = this.loadUserMarkedMenus(userId, appNum);

TreeMenu treeMenu = (TreeMenu)this.getControl("navigationbar");

treeMenu.setTreeMenusMarked(markedMenuList);


}


//获取用户的对应app菜单

 private List<String> loadUserMarkedMenus(String userId, String appNum) {

ArrayList markedMenuList = new ArrayList();

try {

DynamicObject[] menuObject = BusinessDataServiceHelper.load("portal_usermarkedmenu", "menu", new QFilter[]{new QFilter("user", "=", userId), new QFilter("bizapp", "=", appNum)});

if (menuObject!=null && menuObject>0) {

for(int i = 0; i < menuObject.length; ++i) {

    markedMenuList.add(menuObject[i].getString("menu"));

}

}

} catch (Exception e) {

}

return markedMenuList;

 }


//菜单点击事件

public void treeMenuClick(TreeNodeEvent evt) {

}


赞 1