在编辑界面,我们可以正常的保存某个值到数据库,同时列表界面也可以正常显示。
但是当我们再次打开这个编辑界面的时候,该属性值缺无法显示。
通常情况下,通过下面两个方法可以解决
方法一: 在编辑界面重写一个getSelectors()方法,因为显示的属性都是通过这个方法设定
public SelectorItemCollection getSelectors(){
SelectorItemCollection sic = super.getSelectors();
sic.add(new SelectorItemInfo("isMargin"));//这是不能正常显示的字段
sic.add(new SelectorItemInfo("bidBond"));//这是不能正常显示的字段
sic.add(new SelectorItemInfo("bidBondDate"));//这是不能正常显示的字段
return sic;
}
方法二 (不推荐) 重写另外一个方法,直接查数据库
public void setDataObject(IObjectValue dataObject)
{
String fid=dataObject.getString("id");
IRowSet rs=null;
Boolean bool=false;
BigDecimal bidBond = new BigDecimal("0");
Date bidBondDate =null;
try {
rs=DataUtils.clientExecuteSQL(" select cfismargin,cfbidBond,CFBIDBONDDATE from T_BD_Supplier where fid='"+fid+"' and cfismargin is not null ");
if(rs.next()){
int b=rs.getInt("cfismargin");
if(1==b){
bool=true;
}
if(rs.getRow()==1)
{
bidBond=rs.getBigDecimal("cfbidBond");
}
bidBondDate=rs.getDate("CFBIDBONDDATE");
}
} catch (Exception e) {
e.printStackTrace();
}
//System.out.println(dataObject.getBoolean("isMargin"));
dataObject.setBoolean("isMargin", bool);
dataObject.setBigDecimal("bidBond", bidBond);
dataObject.setDate("bidBondDate", bidBondDate);
IObjectValue ov = dataObject;
super.setDataObject(ov);
this.editData = (com.kingdee.eas.basedata.master.cssp.SupplierInfo)ov;
}
其实,归根结底还是getvalue方法起作用 getValue(pk, getSelectors()); 如果用重写过getvalue方法,那就要注意了