This post is about a common development requirement- Can we increase or decrease number of fields , type of fields (columns in case of table), data in fields at run time?
Suppose i have to show data of Departments and Employees table on page using only one af:table component. It means columns should be generated dynamically at run time depending on any defined condition
So for this requirement i am using dynamic viewObject in model layer and af:dynamicComponent in view layer
See previous post about creating dynamic viewObject-
Creating Dynamic View Object at Runtime programmatically - Oracle ADF
See step by step implementation-
Thanks, Happy Learning :)
Download -Sample ADF Application
Suppose i have to show data of Departments and Employees table on page using only one af:table component. It means columns should be generated dynamically at run time depending on any defined condition
So for this requirement i am using dynamic viewObject in model layer and af:dynamicComponent in view layer
See previous post about creating dynamic viewObject-
Creating Dynamic View Object at Runtime programmatically - Oracle ADF
See step by step implementation-
- Create Fusion Web Application and follow the link posted above to create dynamic viewObject, in short create a viewObject using dual and a method in AMImpl to create dynamic viewObject from sql query
- Created a page and added an inputText to enter SQL query and a button to process that query and create dynamic viewObject at run time
- See Managed Bean code to process query, value of inputText is passed using component binding
- Now dropped this dual viewObject on page as dynamic form and dynamic table from Data Control (this snap is about creating form)
- Next is to change pageDef entry for this dynamic component , open pageDef and goto treeBinding. there is an entry for nodeDefinition, there will be separate treeBinding for form and table both (you should change both)
- Now run this application and enter SQL query in box and press process button
/**Method to create viewObject using SQL query * @param query */ public void createNewViewObject(String query) { ViewObject dynVo = this.getdynamic1(); dynVo.remove(); this.createViewObjectFromQueryStmt("dynamic1", query); this.getdynamic1().executeQuery(); }
private RichInputText sqlQueryBind; public DynamicTableBean() { } /*****Generic Method to call operation binding**/ public BindingContainer getBindingsCont() { return BindingContext.getCurrent().getCurrentBindingsEntry(); } /** * Generic Method to execute operation Binding * */ public OperationBinding executeOperation(String operation) { OperationBinding createParam = getBindingsCont().getOperationBinding(operation); return createParam; } /**Method to create viewObject * @param actionEvent */ public void createViewObjectAction(ActionEvent actionEvent) { if (sqlQueryBind.getValue() != null) { OperationBinding ob = executeOperation("createNewViewObject"); ob.getParamsMap().put("query", sqlQueryBind.getValue().toString()); ob.execute(); } } public void setSqlQueryBind(RichInputText sqlQueryBind) { this.sqlQueryBind = sqlQueryBind; } public RichInputText getSqlQueryBind() { return sqlQueryBind; }
<tree IterBinding="dynamic1Iterator" id="dynamic1"> <nodeDefinition DefName="dynamictableapp.model.view.dynamicVO" Name="dynamic10"/> </tree>
Change this entry like this-
<tree IterBinding="dynamic1Iterator" id="dynamic1"> <nodeDefinition Name="dynamic10"/> </tree>
Thanks, Happy Learning :)
Download -Sample ADF Application
excellent work , how can i change from outputtext to check box , then if i want make action on this check box on valueChangeListener?
ReplyDeleteis that available or not?
regards
This only works in 12c.
ReplyDeleteHi Ashish,
ReplyDeleteSuper Explanation Man!!
Just quick question, how to create dynamic table in updatable mode on UI (only when Status Code column in Dynamic table is 'E' then corresponding row should be in Editable mode).
Jdev 12.1.3
Thanks
Hi Ashish,
ReplyDeleteSuper Explanation Man!!
Just quick question, how to create dynamic table in updatable mode on UI (only when Status Code column in Dynamic table is 'E' then corresponding row should be in Editable mode).
Jdev 12.1.3
Thanks
Hey,
ReplyDeleteWhen i am trying the above thing it shows 'No data to display.' on page.
Please help.
Hey,
ReplyDeleteWhen i am trying the above thing it shows 'No data to display.' on page.
Please help.
Anyone found out the solution to the 'No data to display' issue?
ReplyDeleteThanks!