单据界面插件原创
4人赞赏了该文章
2,154次浏览
编辑于2021年04月02日 10:02:54
插件基类 :public class PurReqDemo02BillPlugIn extends AbstractBillPlugIn implements IBillPlugin
工具条按钮点击事件 执行前 弹框 取消操作
@Override public void beforeItemClick(BeforeItemClickEvent evt) { // TODO Auto-generated method stub super.beforeItemClick(evt); //this.getView().showForm(arg0); //保存时,弹出确认框 提示是否确认操作功能。 、 //1.设置取消,弹出消息, //2.confirmCallBack 中判断确认,继续操作的功能,否则不处理即操作取消 if(KEY_SAVE.equals(evt.getItemKey())) { evt.setCancel(true); //作废操作前让用户选择是否继续作废操作,在用户点击确认框上的按钮后,系统会调用confirmCallBack方法 ConfirmCallBackListener confirmCallBackListener = new ConfirmCallBackListener(KEY_SAVE, this); //设置页面确认框,参数为:标题,选项框类型,回调监听 this.getView().showConfirm("您确认保存此单据吗?", MessageBoxOptions.YesNoCancel, confirmCallBackListener); } System.out.println("beforeitemclick"); }
@Override public void confirmCallBack(MessageBoxClosedEvent messageBoxClosedEvent) { // TODO Auto-generated method stub super.confirmCallBack(messageBoxClosedEvent); //弹框回调的id if (KEY_SAVE.equals(messageBoxClosedEvent.getCallBackId())) { //判断点击的按钮 if (MessageBoxResult.Yes.equals(messageBoxClosedEvent.getResult())) { this.getView().invokeOperation("save"); }else { this.getView().showTipNotification("数据未保存"); } } System.out.println("confirmCallBack"); }
3. 值改变事件,获取单据头,单据体改变的值,整个单据体值
@Override public void propertyChanged(PropertyChangedArgs e) { // TODO Auto-generated method stub super.propertyChanged(e); //单据头字段变化 String pname = e.getProperty().getName(); DynamicObject cghtbhF7 ; if("cght".equals(pname)) { //this.getView().showMessage(this.getModel().getValue("cght").toString()); this.getView().showSuccessNotification(this.getModel().getValue("cght").toString()); //采购合同编号F7 cghtbhF7 = (DynamicObject) this.getModel().getValue("cght"); //采购合同编号 String cghtbh = cghtbhF7.get("billno").toString(); String id = cghtbhF7.get("id").toString(); //根据合同编号取 采购合同对象 QFilter f1 = new QFilter("billno",QCP.equals,cghtbh); DynamicObject cghtObj = QueryUtil.loadSingle("nyn1_cght003", new QFilter[] {f1}); //id 采购合同对象 QFilter f2 = new QFilter("id",QCP.equals,id); DynamicObject cghtObj2 = QueryUtil.loadSingle("nyn1_cght003", new QFilter[] {f2}); System.out.println("--"); } //单据体行变化时先获取单据体变化的行 然后获取变化行对应的值 ChangeData[] changeData = e.getChangeSet(); if(changeData!=null) { int index = changeData[0].getRowIndex(); //基础资料 //Object matieril = (Object) this.getModel().getValue("materiel", index); //DynamicObject mat = (DynamicObject) this.getModel().getValue("materiel", index); //String matt = (String) mat.get("number"); //BigDecimal applyqty = (BigDecimal) this.getModel().getValue("qty",index); //this.getView().showMessage(matieril); //this.getView().showSuccessNotification(matieril.toString()); //System.out.println(matieril); } //单据体行金额变化时,遍历单据体自动计算单据头总金额 if("amount".equals(pname)) { DynamicObjectCollection entrys = this.getModel().getEntryEntity("entryentity"); BigDecimal allAmount = new BigDecimal(0); for(DynamicObject entry : entrys) { BigDecimal amount = entry.getBigDecimal("amount"); allAmount = allAmount.add(amount); } this.getModel().setValue("totalamount",allAmount); } }
4.获取单据体选中行行
//获取单据体数据
DynamicObjectCollection entrys = this.getModel().getEntryEntity("billentry");
//获取单据体选中的行号
int[] selectRows = ((EntryGrid)this.getControl("billentry")).getSelectRows();
推荐阅读