getComponentCount();i++){
controlPanel.getComponent(i).setEnabled(chkisSumItem。
isSelected());
}
其中kdtSumExpress为上图中的表格.
再提及一点,controlPanel的parent为com.kingdee。
eas。
framework.client。
multiDetail。
DetailPanel。
单据多分录中如何对某个页签中分录行数据增加做前处理和后处理?
对于单据单分录,如果我们想对某行数据在增加时或删除时做处理,直接用框架提供的事件即可,但对于多分录目前框架无法直接处理,需要我们自己在代码中来处理,具体例子如下:
/**
*outputpackagename
*/
packagecom。
kingdee。
eas.huar.projectmgr。
client;
。
.。
/**
*outputclassname
*/
publicclassPrjEstimateEditUIextendsAbstractPrjEstimateEditUI implementsIDetailPanelListener {
privatestaticfinalLoggerlogger=CoreUIObject.getLogger(PrjEstimateEditUI。
class);
.。
.
/**
*outputclassconstructor
*/
publicPrjEstimateEditUI()throwsException{
super();
}
protectedvoidinitListener(){
super.initListener();
ContainerpnlPlaceCirc=kdtPlaceCircs.getParent().getParent();
if(pnlPlaceCircinstanceofDetailPanel){
DetailPaneldetailPanel=(DetailPanel)pnlPlaceCirc;
detailPanel。
addAddListener(this);
detailPanel。
addInsertListener(this);
}
cmbxMakeMethod。
addItemListener(newItemListener(){
publicvoiditemStateChanged(ItemEvente){
if(e。
getStateChange()==ItemEvent。
SELECTED){
booleanenabled=e。
getItem()==RentCalcMethodEnum.pressAndEngineFixedRent;
txtNomMonthRate.setEnabled(enabled);
}
}
});
}
publicvoidbeforeEvent(DetailPanelEvente)throwsException{
PrjEstimatePlaceCircInfoprjEstimatePlaceCirc=(PrjEstimatePlaceCircInfo)e。
getObjectValue();
prjEstimatePlaceCirc.setCurrency(currency);
prjEstimatePlaceCirc.setCreator(SysContext。
getSysContext().getCurrentUserInfo().getPerson());
prjEstimatePlaceCirc。
setCreateTime(newDate());
}
publicvoidafterEvent(DetailPanelEvente)throwsException{
//TODO自动生成方法存根
}
}
如何给单据分录上增加核算项目的F7(代码示例)。
用BIM在单据上先增加核算项目的列,注意如果BIM中选择不到核算项目的业务单元,还需要先手工在BIM中先引入一个,然后发布,在实现类中增加如下代码(须根据自己的实际修改控件名和自定义核算项目类别编码):
publicstaticvoidinitHZPrmt(KDTablekdtEntry,CoreUIObjecteditUI)throwsBOSException{
finalKDBizPromptBoxkdtEntry_PromptBox=newKDBizPromptBox();
kdtEntry.checkParsed();
kdtEntry_PromptBox.setVisible(true);
kdtEntry_PromptBox。
setEditable(true);
setHZ(kdtEntry_PromptBox,editUI);
kdtEntry_PromptBox。
setDisplayFormat(”$number$”);
kdtEntry_PromptBox。
setEditFormat(”$number$");
kdtEntry_PromptBox.setCommitFormat(”$number$”);
KDTDefaultCellEditorkdtEntry_CellEditor=newKDTDefaultCellEditor(
kdtEntry_PromptBox);
kdtEntry.getColumn("cargo”).setEditor(kdtEntry_CellEditor);
ObjectValueRenderkdtEntry__OVR=newObjectValueRender();
kdtEntry__OVR.setFormat(newBizDataFormat("$name$”));
kdtEntry。
getColumn(”cargo")。
setRenderer(kdtEntry__OVR);
}
publicstaticvoidsetHZ(KDBizPromptBoxbizPromptBox,CoreUIObjectui)throwsBOSException{
IGeneralAsstActTypeGroupiGeneralAsstGroup=GeneralAsstActTypeGroupFactory
。
getRemoteInstance();
GeneralAsstActTypeGroupCollectiongc=iGeneralAsstGroup
。
getGeneralAsstActTypeGroupCollection("select*wherenumber=’01’”);
if(gc。
size()〉0){
GLf7Utils。
assignSelector(bizPromptBox,gc.get(0),””,true,false,null,ui,true);
bizPromptBox.setQueryInfo("com。
kingdee。
eas。
basedata.master.auxacct.app.F7GeneralAsstActTypeQuery”);
}
}
如何让表头的字段在单据提交后还能进行修改?
一般情况下,单据提交后,是不允许修改的。
但是也存在一些特殊的情况,需要在工作流中,对单据中的某些字段进行修改,此时,一般是通过在自定义的UI扩展类中,重写onLoad()方法,然后在方法中调用控件的setEnabled()、setEditable()、setReadOnly()方法(这三个方法不一定需要全部调用,根据具体情况而定),如下代码:
@Override
public void onLoad() throws Exception {
super。
onLoad();
//单据未生成凭证之前,"收款类型"为可编辑、“往来户”也可编辑
boolean hasFV = this.editData.isFiVouchered();
if(!
hasFV){
//收款类型
f7RecBillType.setEnabled(true);
f7RecBillType。
setEditable(true);
f7RecBillType。
setReadOnly(false);
//往来户
prmtPayer。
setEnabled(true);
prmtPayer.setEditable(true);
prmtPayer。
setReadOnly(false);
}
}
EAS分录表头合并
EAS开发中,有时需要对分录或序时簿界面表的表头做合并处理,方法如下:
Java代码
kdtEntrys。
addHeadRow(0);
kdtEntrys。
getHeadRow(0)。
getCell
(1)。
setValue("物料编码");
kdtEntrys.getHeadRow(0)。
getCell
(2).setValue(”详细信息和数量”);
kdtEntrys.getHeadRow(0)。
getCell(3)。
setValue(”详细信息和数量");
kdtEntrys。
getHeadMergeManager()。
mergeBlock(0, 2, 0, 3);
关于bos分录添加附件的相关知识点
今天研究eas标准产品,发现人力资源模块的培训课程TrainCoursEditUI和采购合同PurContractEdituI发现两个的分录一个可以添加分录、一个没有添加分录的选项.经过仔细研究后发现TrainCoursEditUI是直接基础EditUI的,而对于PurContractEdituI是有继承coreBillBase的.所以对于这个差异,问题应该是在coreBillBase的EditUI的代码方法。
如果需要禁止分录添加附件的方法,可以覆盖方法showSubAttacheMent其代码是:
@Override
publicKDMenuItemgetAttachMenuItem(KDTabletable){
returnnull;
}
@Override
protectedvoidshowSubAttacheMent(AttachmentUIContextInfoinfo){
}
给表体(分录、条目)设置默认值(全)
一,如果需要设置的默认值是个固定的值,解决方法:
打开BIM(业务建模视图)—〉打开业务单元->在大纲视图(如果看不到这个视图可以:
窗口—〉显示视图->其他—>常规—>大纲)中点开分录,选择要设置默认值的字段右击属性,在“默认值”中属性中设置值
二,如果需要在代码里面动态设置默认值,解决方法:
1。
添加条目按钮(分录面板的三个按钮之一):
//点击添加分录按钮后设置默认值
kdtEntrys_detailPanel.addAddListener(newcom。
kingdee。
eas。
framework。
client。
multiDetail。
IDetailPanelListener(){
publicvoidbeforeEvent(com.kingdee.eas.framework.client。
multiDetail.DetailPanelEventevent)throwsException{
IObjectValuevo=event.getObjectValue();
//设置默认值
vo.put(”matid","MT0001”);
vo。
put("matmc","变形金刚”);
}
publicvoidafterEvent(com.kingdee.eas.framework。
client。
multiDetail。
DetailPanelEventevent)throwsException{
}
});
//添加条目按钮的点击事件
this.kdtEntrys_detailPanel。
getAddNewLineButton()。
addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
//TODOAuto-generatedmethodstub
MsgBox。
showInfo("添加分录按钮的点击事件!
");
}
});
2. 插入条目按钮(分录面板的三个按钮之一):
//点击插入分录按钮后设置默认值
kdtEntrys_detailPanel。
addInsertListener(newcom.kingdee.eas.framework.client。
multiDetail。
IDetailPanelListener(){
publicvoidbeforeEvent(com。
kingdee.eas。
framework。
client.multiDetail。
DetailPanelEventevent)throwsException{
IObjectValuevo=event。
getObjectValue();
//设置默认值
vo.put("matid”,"MT0002”);
vo。
put("matmc","生铁”);
}
publicvoidafterEvent(com.kingdee.eas.framework。
client.multiDetail。
D