This tutorial is about a requirement of conditionally enabling/disabling
items (values) of adf bound List (af:selectOneChoice) component
here i am taking reference of default HR Schema (Departments and Location table )
See the steps-
here i am taking reference of default HR Schema (Departments and Location table )
See the steps-
- Create a Fusion Web Application and business components using both tables
- Now create List of Values (Lov) on locationId of departments VO from Location VO
- Set List Attribute to LocationId and for UI city will be shown
- Now Drag Departments VO from Data Control on page as a form
- Select LocationId list field and delete f:selectItems from it, now drag af:selectItem as child of af:selectOneChoice and surround it with af:forEach
- Add tree binding of Location ViewObject to page bindings in order to populate list items using forEach
- Now select af:forEach and set its property and variable name, as we have to iterate through Location VO for list items
- Again select af:selectItem and set its value and label property using forEach variable's
- Now run your application, and see that list box is ready with values
- Now we have to disable its values as a condition basis, i have written an Expression on af:selectItem's disabled property
- I have written condition for DepartmentId 100 and 110, see in source of page
- Now value given in Expression for Location Id will be disabled for given Department
- Run your page and select DepartmentId 100 and 110 to see disabled list items
<af:selectOneChoice value="#{bindings.LocationId.inputValue}" label="#{bindings.LocationId.label}" required="#{bindings.LocationId.hints.mandatory}" shortDesc="#{bindings.LocationId.hints.tooltip}" id="soc1" contentStyle="width:150px;color:red;"> <af:forEach items="#{bindings.Locations1.rangeSet}" var="list"> <af:selectItem label="#{list.City}" id="si1" value="#{list.LocationId}" disabled="#{ (bindings.DepartmentId.inputValue==100 and (list.LocationId==1000 || list.LocationId==1300)) || (bindings.DepartmentId.inputValue==110 and (list.LocationId==1500 || list.LocationId==1600 || list.LocationId==1700 || list.LocationId==1800 || list.LocationId==1900))}"/> </af:forEach> </af:selectOneChoice>
No comments:
Post a Comment