SCENARIO
While working on one of the requirements for a health sector solutions customer based out Atlanta, Georgia there was a requirement to assign default value to particular dependent picklist field based on value selected on controlling picklist field in VF page.
CHALLENGE
Although, We can achieve the requirement by making the field mandatory on page layout but the client doesn't want that field to be required. So we have made custom JS to set default value to dependent picklist based on controlling picklist field value in the VF page.
RESOLUTION
To fulfil the requirement, we have used <apex:actionFuntion> tag of visualforce page. By using this tag, we can call apex controller method from Javascript code using an AJAX request.
Below is a sample code for reference. Here, we get the value of controlling picklist field and calling apex class using <apex:actionFunction>.
ActionFunctionVFPage.vfp
<apex:page controller="retrieveValue"> <script> function changefield(regionValue){ var r =document.getElementById(regionValue); if(regionValue == "India"){ rerendAction(); } } </script> <apex:form > <apex:sectionHeader title="Account" subtitle="Region Picklist Value"/> <apex:actionFunction action="{!zoneValue}" name="rerendAction" rerender="zone"/> <apex:pageblock id="pageRender"> <apex:pageblocksection > <apex:pageblocksectionitem > <apex:outputlabel value="Region"/> <apex:inputField value="{!acc.Region__c}" onchange="changefield(this.value)"/> </apex:pageblocksectionitem> </apex:pageblocksection> <apex:pageblocksection id="zonefield"> <apex:pageblocksectionitem > <apex:outputlabel value="Zone"/> <apex:inputField value="{!acc.Zone__c}" id="zone"/> </apex:pageblocksectionitem> </apex:pageblocksection> </apex:pageblock> </apex:form> </apex:page>
ActionFunctionController.apxc
global class retrieveValue { public Account acc{get;set;} public retrieveValue(){ acc=new Account(); } public void zoneValue() { acc.Zone__c = 'West_Zone'; } }
In apex class, we are setting default values to dependent picklist and action function will reRender the dependent picklist field.
Output
CONCLUSION
By Using custom JS and <apex:actionFuntion> , we are able to set default value to dependent picklist field based on value selected on controlling picklist field in VF page.
If you have any questions you can reach out our Salesforce Consulting team
here.