以下方法放在onLoad()里面,分别设置职员的F7控件,部门的F7控件,再通过监听值改变事件来重新赋值
// 修正元数据框架错误number->name
final KDBizPromptBox kdtEntrys_taskUser_PromptBox = new KDBizPromptBox();
kdtEntrys_taskUser_PromptBox.setQueryInfo("com.kingdee.eas.basedata.person.app.F7PersonQuery");
kdtEntrys_taskUser_PromptBox.setVisible(true);
kdtEntrys_taskUser_PromptBox.setEditable(true);
kdtEntrys_taskUser_PromptBox.setDisplayFormat("$name$");
kdtEntrys_taskUser_PromptBox.setEditFormat("$name$");
kdtEntrys_taskUser_PromptBox.setCommitFormat("$name$");
KDTDefaultCellEditor kdtEntrys_taskUser_CellEditor = new KDTDefaultCellEditor(kdtEntrys_taskUser_PromptBox);
this.kdtEntrys.getColumn("taskUser").setEditor(kdtEntrys_taskUser_CellEditor);
ObjectValueRender kdtEntrys_taskUser_OVR = new ObjectValueRender();
kdtEntrys_taskUser_OVR.setFormat(new BizDataFormat("$name$"));
this.kdtEntrys.getColumn("taskUser").setRenderer(kdtEntrys_taskUser_OVR);
//设置F7左树右表结构(com.kingdee.eas.fm.common.client.F7SelectorFactory.* 不同的方法初始化不同的左树右表,例initPerson为员工的左树右表)
com.kingdee.eas.fm.common.client.F7SelectorFactory.initPerson(this, kdtEntrys_taskUser_PromptBox);
ObjectValueRender kdtEntrys_taskDept_OVR = new ObjectValueRender();
kdtEntrys_taskDept_OVR.setFormat(new BizDataFormat("$name$"));
this.kdtEntrys.getColumn("taskDept").setRenderer(kdtEntrys_taskDept_OVR);
KDBizPromptBox kdtEntrys_taskDept_PromptBox = (KDBizPromptBox)this.kdtEntrys.getColumn("taskDept").getEditor().getComponent();
com.kingdee.eas.fm.common.client.F7SelectorFactory.initAdminOrgUnit(this, kdtEntrys_taskDept_PromptBox);
// 自动带出部门
kdtEntrys_taskUser_PromptBox.addDataChangeListener(new DataChangeListener() {
public void dataChanged(DataChangeEvent eventObj) {
try {
if(eventObj.getNewValue() != null && eventObj.getNewValue() != eventObj.getOldValue()) {
int rowIndex = kdtEntrys.getSelectManager().getActiveRowIndex();
IRow row = kdtEntrys.getRow(rowIndex);
if(row != null) {
PersonInfo taskUser = (PersonInfo)eventObj.getNewValue();
if(taskUser != null) {
String querySQL = "select adminorgunit.fid id " +
" from t_bd_person person "+
" inner join t_org_positionmember positionmember on person.fid = positionmember.fpersonid "+
" inner join t_org_position position on positionmember.fpositionid = position.fid "+
" inner join t_org_admin adminorgunit on position.fadminorgunitid = adminorgunit.fid "+
" where person.fid = '"+taskUser.getId().toString()+"'";
ISQLExecutor sqlExec = SQLExecutorFactory.getRemoteInstance(querySQL);
IRowSet rs = sqlExec.executeSQL();
if(rs != null && rs.next()) {
String ORG_FID = rs.getString("id");
AdminOrgUnitInfo orgInfo = AdminOrgUnitFactory.getRemoteInstance().getAdminOrgUnitInfo(new ObjectUuidPK(ORG_FID));
row.getCell("taskDept").setValue(orgInfo);
}
}
}
}
} catch ( Exception ex ) {
ex.printStackTrace();
}
}
});