I have to crate a custom search form which has a drop-down having a multi-pick list available values as options. The search is to find some child records based on any one of the selected value of a multi-pick list . So I have crated a pick list (drop-down) with options as the available values of the multi-pick list . For that I find a solution to get available values of a multi-pick list by Apex coding.
Retrieving available values of a multi-pick list
The used function as below:
public List< selectOption> getPickListValues(Sobject objectName, String fieldName, String firstValueLabel, String firstValue) {
List<selectOption > options = new List<selectOption> ();
if (firstValueLabel != null) { //if first value
options.add(new selectOption(firstValue, firstValueLabel)); //add the first option
}
Schema.sObjectType sobjectType = objectName.getSObjectType(); //get the sobject from schema
Schema.DescribeSObjectResult sobjectDescribe = sobjectType.getDescribe(); //get the describe of sobject
Map fieldMap = sobjectDescribe.fields.getMap(); //get a map of all fields for sobject
List pickListValues = fieldMap.get(fieldName).getDescribe().getPickListValues(); //get the list of picklist values for the field on the sobject
for (Schema.PicklistEntry a : pickListValues) { //for all values in the picklist list
if(a.getValue() != 'unknown' && a.getValue() != 'Other' )
options.add(new selectOption(a.getValue(), a.getLabel())); //add the value and label to options
}
return options;
}
For eg: getPickValues(new Account(), 'Select_List__c', 'All', 'All');
Here my parent object is Account and the field is Select_List__c.
Using multi-pick list value in SOQL
The query that I used as:
[SELECT name FROM child__c WHERE Account__r.Select_List__c INCLUDES (:filter)];
References:
http://boards.developerforce.com/t5/Apex-Code-Development/How-to-retrieve-multi-select-picklists-using-includes-excludes/td-p/172210
http://boards.developerforce.com/t5/Apex-Code-Development/Looping-through-multi-select-picklist-values/td-p/401647
NB: This is for my future reference only
Retrieving available values of a multi-pick list
The used function as below:
public List
List<selectOption
if (firstValueLabel != null) { //if first value
options.add(new selectOption(firstValue, firstValueLabel)); //add the first option
}
Schema.sObjectType sobjectType = objectName.getSObjectType(); //get the sobject from schema
Schema.DescribeSObjectResult sobjectDescribe = sobjectType.getDescribe(); //get the describe of sobject
Map
List
for (Schema.PicklistEntry a : pickListValues) { //for all values in the picklist list
if(a.getValue() != 'unknown' && a.getValue() != 'Other' )
options.add(new selectOption(a.getValue(), a.getLabel())); //add the value and label to options
}
return options;
}
For eg: getPickValues(new Account(), 'Select_List__c', 'All', 'All');
Here my parent object is Account and the field is Select_List__c.
Using multi-pick list value in SOQL
The query that I used as:
[SELECT name FROM child__c WHERE Account__r.Select_List__c INCLUDES (:filter)];
References:
http://boards.developerforce.com/t5/Apex-Code-Development/How-to-retrieve-multi-select-picklists-using-includes-excludes/td-p/172210
http://boards.developerforce.com/t5/Apex-Code-Development/Looping-through-multi-select-picklist-values/td-p/401647
NB: This is for my future reference only