Quantcast
Channel: Deadlypenguin
Viewing all articles
Browse latest Browse all 40

Dynamic dependent picklists in Salesforce

$
0
0

One thing that comes up a lot in the in the #salesforce IRC channel is doing dynamic Visual Force driven off of picklists.  So, let’s buckle up and get to it.

Data Model

In this simple example we are going to make an extension to the case page.  On this page we are going to us a custom Product/Version object to display on the page.  The product list well be determined on the start/end date of the product.  And the version will be driven by the currently selected product. Product

  • Name – The name of the product
  • Currently_Supported__c – Formula based on StartDate__c and EndDate__c (Integer version of a boolean)
  • StartDate__c – The date the product should be shown (Rollup min from the version)
  • EndDate__c – The date the product should be hidden (Rollup max from the version)

Version

  • Name – The name of the version
  • Currently_Supported__c – Formula based on StartDate__c and EndDate__c (Integer version of a boolean)
  • StartDate__c – The date the version should be shown
  • EndDate__c – The date the version should be hidden
  • Product__c – The product the version is related to

Apex Controller

These methods are simple util methods to get product information and version information

The controller has the getters and setters for the product and version.  But most importantly the getters for productList and versionList.  The versionList is triggered off the record’s product.  The other part of this is that for whatever reason (I couldn’t find a good one) is the getRecord does not include the changes made to the Product__c and Version__c field, so you’ll need to set them by hand in the doSave method.

One thing to note is since this is all done in the controller extension and since get and set use the Id, the select list will have the correct thing set when editing an existing record.

Visual Force Page

The key parts of this is that the actionRegion surrounds both the item changing (product) and the dependent item (version).  If you had a third picklist you wanted to trigger on you could add another actionSupport item and tell it to rerender that third list.

Conclusion

Dependent picklists are not very hard to do as long as you remember the actionRegion around both the source and target, and making sure to get the data from the picklist prior to upserting your record.


Viewing all articles
Browse latest Browse all 40

Trending Articles