有时候需要通过一个表中字段属性名称作为改表的查询条件去查询出这些字段的值。然后对这些值进行维护。 1、将需要维护的字段的名称和值保持在属性表中FND_LOOKUP_VALUES中,这里针对的是一个key对应一个value值
1 EMPLOYEES FIRST_NAME Steven 名字 2 EMPLOYEES LAST_NAME King 姓 3 EMPLOYEES EMAIL SKING 电子邮箱 4 EMPLOYEES PHONE_NUMBER 515.123.4567 电话号码 |
2、建立Fnd_lookup_values相对于的LOV视图
select t.lookup_values,t.meaning,t.description from fnd_lookup_values t where t.lookup_type=’EMPLOYEES’ |
3、根据要维护的表,建立相应的EO、VO。
4、针对VO建立相应的子查询
5、在AM的实现类中写相应的查询方法
public void queryTableColumus(String columus) {
EmployeesVOImpl vo = this.getEmployeesVO1();
vo.applyViewCriteria(null);//清空子查询,避免缓存数据
// System.out.println(“columus–“+columus);
if (columus.equals(“firstName”)) {
System.out.println(“firstName”);
vo.appendViewCriteria(vo.getViewCriteria(“byFirstNameVC”));
} else if (columus.equals(“lastName”)) {
System.out.println(“lastName”);
vo.appendViewCriteria(vo.getViewCriteria(“byLastNameVC”));
} else if (columus.equals(“email”)) {
System.out.println(“email”);
vo.appendViewCriteria(vo.getViewCriteria(“byEmailVC”));
} else if(columus.equals(“phoneNum”)){
System.out.println(“phoneNum”);
vo.appendViewCriteria(vo.getViewCriteria(“byPhoneNumVC”));
}
vo.executeQuery();
}
6、在DC中将创建好的query拖到页面上建立页面,然后显示table。将query或者它外面的layout的visible属性设置为false,不显示该query或者外边的layout。
7、将需要展示的LOV拖到页面上选择Single Selection->ADF Select One Choice
另外将对应的value拖到页面上
9、创建两个按钮并绑定方法
public String queryAction() {
ViewObject vo = this.findIterator(“EmployeesVO1Iterator”).getViewObject();
vo.setWhereClause(null);
vo.executeQuery();
Object tableColumuns =
this.resolveExpression(“#{bindings.FndLookupValueLovVO1.inputValue}”);
String columunsName = null;
if (tableColumuns.toString().trim().equals(“0”)) {
columunsName = “firstName”;
} else if (tableColumuns.toString().trim().equals(“1”)) {
columunsName = “lastName”;
} else if (tableColumuns.toString().trim().equals(“2”)) {
columunsName = “email”;
} else {
columunsName = “phoneNum”;
}
OperationBinding ob = this.findOperation(“queryTableColumus”);
ob.getParamsMap().put(“columus”, columunsName);
ob.execute();
return null;
}