金蝶BOS开发中Edit编辑界面和List叙事薄界面需要写的代码
本人刚开始从事金蝶EAS开发,对于这个也是刚刚解除,下面是一些学习整理,
EditUI中的代码
public class MyBillEditUI extends AbstractMyBillEditUI { public MyBillEditUI() throws Exception { super(); } //把数据对象加载到当前UI界面相应的控件 public void loadFields() { super.loadFields(); } //同步当前UI业务数据到数据对象 public void storeFields() { super.storeFields(); } //进行某些控件或数据设置 public void onLoad() throws Exception { IColumn column = this.kdtEntries.getColumn(1); column.getStyleAttributes().setLocked(true); super.onLoad(); this.actionSubmit.addService( new ForewarnService() ) ; this.actionSubmit.addService( new WorkFlowService() ) ; this.actionSubmit.setBindWorkFlow( true ) ; } //创建新的数据对象,并设置初始值 protected IObjectValue createNewData() { MyBillInfo result = new MyBillInfo(); result.set*(value); result.getEntries(); return result; } //创建分录数据对象,并设置初始值 protected IObjectValue createNewDetailData(KDTable table) { return new MyBillEntryInfo(); } //获取分录table protected KDTable getDetailTable() { return kdtEntries; } //获取业务接口 protected ICoreBase getBizInterface() throws Exception { return MyBillFactory.getRemoteInstance(); } //检验数据的合法性,并抛出异常 protected void verifyInput(ActionEvent e) throws Exception { if (this.getDataObject()==null){ throw new Exception();} } //设置某些字段==null protected void setFieldsNull(AbstractObjectValue newData) { newData.set**(null); } //保存数据 public IObjectPK runSave() throws Exception { //设置editData的某些值 super.runSave(); } //同runSave public IObjectPK runSubmit() throws Exception { … super.runSubmit(); } //修改后是提交或暂存 true为暂存 false为提交 protected boolean isModifySave() { return false; }
ListUI中的代码
public class MyBillListUI extends AbstractMyBillListUI { public MyBillListUI() throws Exception{ super(); this.setUITitle("单据测试"); } /** *把数据对象加载到当前UI界面相应的控件,针对序事薄没有用处 */ public void loadFields(){ super.loadFields(); } /** *同步当前UI业务数据到数据对象,针对序事薄没有用处 */ public void storeFields(){ super.storeFields(); } /** *提供序事薄需要打开的编辑界面UI的类名 */ protected String getEditUIName() { return MyBillEditUI.class.getName(); } /** *返回当前业务的远程或本地业务接口 */ protected ICoreBase getBizInterface() throws Exception { return MyBillFactory.getRemoteInstance(); } /** *由开发人员提供当前table的主键字 */ protected String getKeyFieldName() { return "id"; } /** *如果业务需要融合某些列,需要提供这些列的key(即融合单据头) */ public String[] getMergeColumnKeys(){ String[] mergeColumn = new String[2]; mergeColumn[0] = new String("id"); mergeColumn[1] = new String("number"); return mergeColumn; } /** *要在状态栏显示当前的单据条数,需要业务返回计算单据条数的字段 */ protected String[] getCountQueryFields(){ return new String[] {“id“}; } /** *可以指定当前窗口的打开模式,默认情况下不用指定 * UIFactoryName.MODEL,UIFactoryName.NEWWIN,UIFactoryName.NEWTAB */ protected String getEditUIModal(){ return UIFactoryName.MODEL; } /** *是否需要进行表格排序,业务可以覆盖返回false,屏蔽点击单据头排序动作 */ protected boolean isOrderForClickTableHead(){ return true; } /** *返回不需要排序的表列数组,默认返回null */ protected String[] getNotOrderColumns(){ return null; } /** *可以在父类的onload后做一些自己的事情 */ public void onLoad() throws Exception { super.onLoad(); //如设置滚动条隐藏 //this.getMainTable().setScrollStateVertical(KDTStyleConstants.SCROLL_STATE_HIDE); } /** *允许构造传递给EditUI的UIContext,继承类实现 */ protected void prepareUIContext(UIContext uiContext, ActionEvent e){ super.prepareUIContext(uiContext,e); //传递自己的上下文参数或其他值 uiContext.put(key,value); } /** *关闭窗口 */ public boolean destroyWindow() { super.destoryWindow(); //做自己的一下销毁动作 } }
EditeUI 类是客户端编辑界面对应的类
ListUI 类是客户端叙事簿界面对应的类