Hello all
this post is about filtering treeTable on basis of child nodes in Oracle ADF
in this tutorial i have used Departments and Employees table of HR schema to create treeTable
see how to create treeTable-
http://www.awasthiashish.com/2012/11/tree-table-component-in-oracle.html
http://www.awasthiashish.com/2013/08/tree-table-component-with-declarative.html
treeTable look like this-
now next is to search on Employee Names
this post is about filtering treeTable on basis of child nodes in Oracle ADF
in this tutorial i have used Departments and Employees table of HR schema to create treeTable
see how to create treeTable-
http://www.awasthiashish.com/2012/11/tree-table-component-in-oracle.html
http://www.awasthiashish.com/2013/08/tree-table-component-with-declarative.html
treeTable look like this-
now next is to search on Employee Names
- i have dropped a input text for search string and a button to search on page , here i am searching on first name of employees
- now created a view Criteria in Employee viewObject to search on first name
- This viewCriteria doesn't work directly on Employee viewObject, to search in treeTable we have to override createViewLinkAccessorRS method in Departments (master vo) VOImpl class, and in this method we have to call Employees ViewCriteria explicitly , this will filter Employee Vo Rowset as per bind-variable value when a node is disclosed at runtime
- to pass bind-variable value i have created a variable and it's accessors in VoImpl and exposed set method to client that is further used by managed bean
- now this setter method is called in managed bean search button action to set bind variable value
- Run your application and see-
Cheers- Happy Learning
Download Sample ADF Application
/** * @param associationDefImpl * @param viewObjectImpl * @param row * @param object * @return */ protected ViewRowSetImpl createViewLinkAccessorRS(AssociationDefImpl associationDefImpl, ViewObjectImpl viewObjectImpl, Row row, Object[] object) { ViewRowSetImpl viewRowSetImpl = super.createViewLinkAccessorRS(associationDefImpl, viewObjectImpl, row, object); String firstName = getFirstNm(); ViewCriteriaManager vcm = viewObjectImpl.getViewCriteriaManager(); ViewCriteria vc = vcm.getViewCriteria("EmployeesVOCriteria"); VariableValueManager vvm = vc.ensureVariableManager(); vvm.setVariableValue("BindFirstNm", firstName); viewObjectImpl.applyViewCriteria(vc); return viewRowSetImpl; // return super.createViewLinkAccessorRS(associationDefImpl, viewObjectImpl, row, object); }
private String firstNm; public void setFirstNm(String firstNm) { this.firstNm = firstNm; } public String getFirstNm() { return firstNm; }
/**Method to search in treeTable childs * @param actionEvent */ public void searchAction(ActionEvent actionEvent) { if (firstNmBind.getValue() != null) { OperationBinding ob = executeOperation("setFirstNm"); // firstNmBind is binding of inputText ob.getParamsMap().put("firstNm", firstNmBind.getValue().toString()); ob.execute(); /* Method Expand treeTable after Search see- http://www.awasthiashish.com/2013/10/expand-and-collapse-aftreetable.html*/ expandTreeTable(); AdfFacesContext.getCurrentInstance().addPartialTarget(treeTabBind); } }
Hi Ashish, I tried implementing this in Master - Detail Tables. and the said method never get invoked. my VOs are readonly based on SQL Query. Can you please help with pointers
ReplyDeleteHave you checked attached sample application ?
Delete