是这样的,一个业务单元里有很多个字段,现在需要建立三个菜单,三个菜单的数据都来自同一个业务单元,根据需求,不同的菜单只显示需要显示的字段。
- 隐藏我不要的字段
- 不显示不是本菜单的数据,如:a菜单里看不到b菜单的数据
- 个性化设置必录项,如:某个字段在a菜单是必录相,在b菜单不是
1.新建一个业务单元。在金蝶EAS,系统-客户化菜单编辑,新建多个菜单。并绑定到同一个UI对象(com.kingdee.eas.user.client.SaleListUI)
2.在SaleLIstUI.java文件,重写onLoad()方法:
- 获取菜单名。
Map map = getUIContext();
String mainMenuName = map.get("MainMenuName");//假如建了3个菜单,分别为a,b,c
- 判断菜单
if("a".equals(mainMenuName)){
//设置标题名称
setUITitle("a");
//设置过滤条件,不需要的数据可以不展示,行
setFilterForQuery(new FileterInfo("entrys.xxxx IS NOT null"));
//隐藏不需要的列
talMain.getColumn("entrys.yyy").getStyleAttributes().setHided(true);
}
- 上面时序簿就做好了,然后把菜单的名字作为参数传过去SaleEditUI.java
- 在SaleEditUI.java中重写prepareUIContext方法
protected void prepareUIContext(UIContext uiContext, ActionEvent e) {
super.prepareUIContext(uiContext, e);
//获取参数
String mainMenuName = getUIContext().get("MainMenuName").toString();
//放到上下文
uiContext.put("title", mainMenuName);
}
4.在SaleEditUI.java中重写onLoad()方法
//接收参数
String tit = getUIContext().get("title").toString();
setUITitle(tit);//设置标题名称
//隐藏不需要的字段
if("a".equals(tit)){
setUITitle(tit);
kdtEntrys.getColumn("xxxxx").getStyleAttributes().setHided(true);
}
5.设置字段属性
- 在BOS里面设置。打开业务单元,大纲-选择需要的字段-属性-新增保存事件-选择单据合法性校验。
校验的条件可以随便写,我们不需要用他的检验。 - 新增完之后保存,发布业务单元
- 这时系统会自动在AbstractSaleEditUI.java中生成一个kdtEntrys_validate()方法,里面有刚刚定义的校验规则,我们只需要在SaleEditUI.java中重写该方法就可以了。
//表单验证
@Override
public void kdtEntrys_validate() throws Exception {
String tit = getUIContext().get("title").toString();
if("a".equals(tit)){
for (int rowIndex=0,n=kdtEntrys.getRowCount();rowIndex<n;rowIndex++) {
//如果xxx字段为空,在保持的时候会提示“xxx不能为空”,不能保存
if (com.kingdee.bos.ui.face.UIRuleUtil.isNull(kdtEntrys.getCell(rowIndex,"xxx").getValue())) {
com.kingdee.eas.util.client.MsgBox.showInfo(this,"xxx不能为空");com.kingdee.eas.util.SysUtil.abort();
}
}};
}
网友评论