问题:有时候需要在单据上查或下查出来的“单据关联”界面添加一下通用的功通,以方便用户的操作,提搞系统效率。
实现方法:
1、找到以下UI元数据:com.kingdee.eas.base.btp.client.BTPRelationNavUI 加上面添加按钮和相关的action。发布此元数据。
2、实现BTPRelationNavUICTEx类。并重写相关的Action方法。
(以上示例代码主要是展示如何获取“界据关联”界面中选中的行中某一列的值)。
package com.kingdee.eas.base.btp.client;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.util.HashMap;
import java.util.Vector;
import com.kingdee.bos.ctrl.kdf.table.IRow;
import com.kingdee.bos.ctrl.kdf.table.KDTable;
import com.kingdee.bos.ctrl.swing.KDPanel;
import com.kingdee.eas.base.btp.BTPException;
import com.kingdee.eas.base.btp.BTPManagerFactory;
import com.kingdee.eas.base.btp.IBTPManager;
import com.kingdee.eas.custom.util.MediaUtil;
import com.kingdee.eas.framework.batchHandler.RequestContext;
import com.kingdee.eas.framework.client.ListUI;
import com.kingdee.eas.util.client.MsgBox;
import com.kingdee.util.StringUtils;
public class BTPRelationNavUICTEx extends BTPRelationNavUI{
public BTPRelationNavUICTEx() throws Exception {
super();
}
@Override
public void onLoad() throws Exception {
super.onLoad();
this.btnViewImg.setEnabled(true);
}
/**
* 在单据关联界面 增加一个通用功能:查看影像功能
*/
public void actionViewImg_actionPerformed(ActionEvent e) throws Exception {
String selectedBarcode = getSelectedBarcode();
System.out.println(selectedBarcode);
if(null != selectedBarcode && !"".equals(selectedBarcode)){
MediaUtil.viewImg(selectedBarcode);//业务逻辑方法,跟据你的需要去实现
}else{
MsgBox.showInfo("条形码为空的单据不存在影像。");
}
}
/**
* 获取选中记录的条形码
* @return
* @throws BTPException
* @throws Exception
*/
private String getSelectedBarcode() throws BTPException, Exception {
String barcode = ""; //选中行的条形码
if (innerGetListUIComponentXLQ() != null) {
KDTable kdTable = ((ListUI) innerGetListUIComponentXLQ()).getMainTable();
if (kdTable.getSelectManager().getActiveRowIndex() >= 0) {
if(null != kdTable.getCell(kdTable.getSelectManager().getActiveRowIndex(), "barCode")){
barcode = (String)kdTable.getCell(kdTable.getSelectManager().getActiveRowIndex(), "barCode").getValue();
}else if(null != kdTable.getCell(kdTable.getSelectManager().getActiveRowIndex(), "barcode")){
barcode = (String)kdTable.getCell(kdTable.getSelectManager().getActiveRowIndex(), "barcode").getValue();
}
} else {
throw new BTPException(BTPException.NOSELECTROW);
}
} else {
throw new BTPException(BTPException.NOSELECTROW);
}
return barcode;
}
private Component innerGetListUIComponentXLQ() {
if ((this.tpRelatedBills == null)
|| ((KDPanel) this.tpRelatedBills.getSelectedComponent() == null)
|| (((KDPanel) this.tpRelatedBills.getSelectedComponent())
.getComponentCount() <= 0)) {
return null;
}
return ((KDPanel) this.tpRelatedBills.getSelectedComponent()).getComponent(0);
}
}