关注公众号获取更多金蝶EAS开发方面的内容
因论坛版权要求,部分图片无法显示,可以直接方位微信公众号链接
https://mp.weixin.qq.com/s/t91LiENYO0XmdV9lFhOJ0w
本篇文档介绍业务单据Editt界面的一些常用样式开发
01
新增单据设置默认值
/**
* 新增单据
*/
protected com.kingdee.bos.dao.IObjectValue createNewData(){
com.kingdee.eas.custom.cost.ExpenseBillInfo objectValue = new com.kingdee.eas.custom.cost.ExpenseBillInfo();
objectValue.setCreator((com.kingdee.eas.base.permission.UserInfo)(com.kingdee.eas.common.client.SysContext.getSysContext().getCurrentUser()));
//设置空控件默认值
objectValue.setBizDate(new Date());//设置默认业务日期
objectValue.setBillState(billStateEnum.SAVE);//设置单据状态
UserInfo userInfo = (UserInfo) (SysContext.getSysContext().getCurrentUser());objectValue.setApplier(userInfo.getPerson()); //设置报销人
return objectValue;
}
说明:
标准自带的createNewData方法,对objectValue设置相应的属性值即可,该方法只会在单据新增时调用
02
新增分录设置默认值
/** * 新增分录行 */ protected IObjectValue createNewDetailData(KDTable table) { ExpenseBillEntryInfo info = new ExpenseBillEntryInfo(); // 创建一个分录实体对象 info.setAmount(BigDecimal.ZERO); // 金额默认为0 return info; }
说明:
标准自带的createNewDetailData方法,新增一个分录对象,对象设置属性值,返回对象就可以了,在分录每次新增行时会调用该方法
03
初始化单据按钮
/** * 初始化按钮 */ protected void initWorkButton() { super.initWorkButton(); btnAudit.setEnabled(true); //审核按钮可用 btnUnAudit.setEnabled(true); //反审核按钮可用 chkMenuItemSubmitAndAddNew.setSelected(false); //取消连续新增 menuSubmitOption.setVisible(false);//取消连续新增 btnCopy.setVisible(false); //隐藏赋值 actionCopy.setEnabled(false); //禁用赋值action actionCopy.setVisible(false); }
说明:
重写标准自带的initWorkButton方法,需要先执行完毕父类的逻辑再执行自己开发的逻辑,所以需要在super加入自定义代码,在界面每次打开时会调用该方法
04
样式设置
/** *页面打开 */ public void onShow() throws Exception { super.onShow(); initHeadStyle(); //新增表头样式方法 initTableStyle();//新增分录表头样式方法 }
说明:
重写标准自带的onShow方法,需要先执行完毕父类的逻辑再执行自己开发的逻辑,所以需要在super加入自定义代码,在界面每次打开时会调用该方法
05
页面表头样式设置
/** * 设置表头样式 */ private void initHeadStyle() { //txtnumber 字段可以不用设置,父类中已经对该控件进行了控制,例如启用编码规则后不可修改等 pkBizDate.setRequired(true);//设置必填 prmtapplier.setRequired(true);//设置必填 prmtcompany.setRequired(true);//设置必填 prmtdept.setRequired(true); //设置必填 txtamount.setRequired(true);//设置必填 billState.setEnabled(false); //设置不可修改 //设置默认过滤 // EntityViewInfo view = new EntityViewInfo(); //创建view 用来过滤 // FilterInfo expenseFilter = new FilterInfo(); //创建filter //用来过滤 // expenseFilter.getFilterItems().add(new FilterItemInfo("isEnabled",true)); //设置过滤条件 只在展示启用状态的数据 // view.setFilter(expenseFilter);// 将filter 放进view // SorterItemCollection sic = new SorterItemCollection(); //设置排序 // SorterItemInfo sicItme = new SorterItemInfo("number"); //设置按照编码排序 // sicItme.setSortType(SortType.ASCEND); //设置排序方式 // sic.add(sicItme); // view.setSorter(sic); //排序赋值给 view // prmtcompany.setEntityViewInfo(view); // 给公司字段设置过滤 }
说明:
新增initHeadStyle方法,在onShow方法的super后调用,一般用来设置固定的有些属性,例如必填,是否显示,是否必填,以及一些F7的固定过滤
注:
1、设置的必填只是把单元格的背景色设置为了黄色,单据在保存和提交时不会主动去验证,验证方法需要自己添加。
2、一些动态的过滤,例如选择了公司之后,过滤部门F7只能选择该公司的下属部门,会在下篇文章中讲解。
06
页面分录样式设置
/**
* 设置分录样式
*/
private void initTableStyle() {kdtEntrys.checkParsed(); //解析分录
kdtEntrys.getColumn("amount").setRequired(true); //设置必填
kdtEntrys.getColumn("taxRate").setRequired(true); //设置税率必填
kdtEntrys.getColumn("expenseType").setRequired(true); //设置必填
kdtEntrys.getColumn("tax").getStyleAttributes().setLocked(true); //锁定列 不允许编辑
kdtEntrys.getColumn("id").getStyleAttributes().setHided(true); //隐藏列
String numberFormat = "%r-[=]{#,##0.00}n";
kdtEntrys.getColumn("amount").getStyleAttributes().setNumberFormat(numberFormat); //分录设置金额字段展示样式
kdtEntrys.getColumn("taxRate").getStyleAttributes().setNumberFormat(numberFormat);//分录设置税率字段展示样式
kdtEntrys.getColumn("tax").getStyleAttributes().setNumberFormat(numberFormat);//分录设置税额字段展示样式
kdtEntrys.getColumn("purpose").getStyleAttributes().setWrapText(true); //设置自动换行
kdtEntrys.getColumn("purpose").setWidth(200); // 设置列宽
kdtEntrys.getHeadRow(0).getCell("purpose").setValue("费用说明1"); //设置表头显示名字,因存在多表头getHeadRow 需要获取修改第几行表头
//动态给分录F7 设置属性以及过滤
kdtEntrys.addKDTEditListener(new KDTEditAdapter() {
// 跟F7添加监听事件
public void editStarted(KDTEditEvent e) {
int rowIndex=e.getRowIndex();
int colIndex = e.getColIndex();
String key=kdtEntrys.getColumnKey(colIndex);
if(key.equals("expenseType")){ //判断 如果编辑的事件是费用类型
kdtEntrys_expenseType();
}
}
});
}
/*** 设置分录F7字段属性
*/
private void kdtEntrys_expenseType() {
//设置分录F7控件得相关属性
final KDBizPromptBox expenseTypePrompt = new KDBizPromptBox(); //new 一个F7控件
expenseTypePrompt.setQueryInfo("com.kingdee.eas.custom.cost.app.ExpenseTypeQuery"); //设置F7关联得query
expenseTypePrompt.setVisible(true); //设置是否可见
expenseTypePrompt.setEditable(true); //设置是否可编辑
expenseTypePrompt.setDisplayFormat("$name$"); //设置 展示样式
expenseTypePrompt.setEditFormat("$number$"); // 设置编辑样式
expenseTypePrompt.setCommitFormat("$number$"); //设置提交展示样式
EntityViewInfo expenseView = new EntityViewInfo(); //创建view 用来过滤
FilterInfo expenseFilter = new FilterInfo(); //创建filter //用来过滤
expenseFilter.getFilterItems().add(new FilterItemInfo("isEnabled",true)); //设置过滤条件 只在展示启用状态的数据// expenseFilter.getFilterItems().add(new FilterItemInfo("creator.id",true)); // F7字段的过滤 可以使用 ".",最多支持3级
expenseView.setFilter(expenseFilter);// 将filter 放进view
SorterItemCollection sic = new SorterItemCollection(); //设置排序
SorterItemInfo sicItme = new SorterItemInfo("number");//设置按照编码排序
sicItme.setSortType(SortType.ASCEND); //设置排序方式
sic.add(sicItme);
expenseView.setSorter(sic); //排序赋值给 view
expenseTypePrompt.setEntityViewInfo(expenseView); // 将view 给 pro
KDTDefaultCellEditor kdtEntrys_expenseType_CellEditor = new KDTDefaultCellEditor(expenseTypePrompt); //创建一个编辑器
this.kdtEntrys.getColumn("expenseType").setEditor(kdtEntrys_expenseType_CellEditor); // 将编辑器赋值给分录得 expenseType 控件
ObjectValueRender kdtEntrys_expenseType_OVR = new ObjectValueRender(); //渲染
kdtEntrys_expenseType_OVR.setFormat(new BizDataFormat("$name$")); //设置数据格式
this.kdtEntrys.getColumn("expenseType").setRenderer(kdtEntrys_expenseType_OVR); //设置渲染
//添加选中监听, 因费用类型为树形基础资料,偷懒情况下, 可以设置F7 控件直接打开费用类型得Lsti界面// expenseTypePrompt.addSelectorListener(new SelectorListener() {
// com.kingdee.eas.custom.cost.client.ExpenseTypeListUI expenseTypePrompt_F7ListUI = null;
// public void willShow(SelectorEvent e) {
// if (expenseTypePrompt_F7ListUI == null) {
// try {
// expenseTypePrompt_F7ListUI = new com.kingdee.eas.custom.cost.client.ExpenseTypeListUI();
// } catch (Exception e1) {
// e1.printStackTrace();
// }
// HashMap ctx = new HashMap();
// ctx.put("bizUIOwner",javax.swing.SwingUtilities.getWindowAncestor(expenseTypePrompt_F7ListUI));
// expenseTypePrompt_F7ListUI.setF7Use(true,ctx);
// expenseTypePrompt.setSelector(expenseTypePrompt_F7ListUI);
// }
// }
// });
}
说明:
新增initTableStyle方法,在onShow方法的super后调用,一般用来设置固定的有些属性,例如必填,是否显示,是否必填,以及一些F7的固定过滤
注:
1、设置的必填只是把单元格的背景色设置为了黄色,单据在保存和提交时不会主动去验证,验证方法需要自己添加。
2、一些动态的过滤,例如选择了公司之后,过滤部门F7只能选择该公司的下属部门,可以给分录添加addKDTEditListener事件,在事件中,添加相应的if判单来设置影响的属性
因Edit界面相关逻辑代码较多分三篇进行讲解
欢迎加入QQ群:557537072
关注微信公众号获取更多资讯
本文转载自:微信公众号
作者:黑白
原文链接:https://mp.weixin.qq.com/s/t91LiENYO0XmdV9lFhOJ0w
推荐阅读