+ Start a Discussion

add new values in sobject picklist.

Hi i have an sobject in which a picklist with 3 values has been saved. Now i want to give additional values in picklist via a input text box in  visualforce and apex. I am able to fetch the records here. but unable to add values to it.  Adding my code for reference.

<apex:page controller="clientobject">
<apex:form >
 <apex:pageBlock >
  <apex:selectList id="countries" value="{!picklist}" size="1">
  <apex:selectOptions value="{!countries}"/>
  Enter value to add:<apex:inputText value="{!pick}"/>
  <apex:commandButton value="add" />
//controller class
public class clientobject {
public string pick{set;get;}
public string picklist{set;get;}
transient List<Schema.PicklistEntry> ple = new List<Schema.PicklistEntry>();
public clientobject(){

public List<SelectOption> getCountries(){
  List<SelectOption> options = new List<SelectOption>();
   Schema.DescribeFieldResult fieldResult = OfficeLocation__c.Country__c.getDescribe();
  ple = fieldResult.getPicklistValues();
   for( Schema.PicklistEntry f : ple)
      options.add(new SelectOption(f.getLabel(), f.getValue()));
    system.debug('picklist values are ::::::::::'+options);
   return options;

 i don't know how to perform dml actions on schema.describe calls ? Any suggestions would be appreciated


You cannot add picklist values through apex class or visualforce force to sobject... 


The only way go for metadata api class...


This one is the solution for adding picklist field and their values for sobject .....


you can find out the metadata api class and their services from the below,





If you found this answer helpful to you... Please accept this as a Solution and  give kudos by clicking on the star icon.


Thanks and Regards,

Arunkumar.R | Salesforce Certified Developer

Yes, Picklist values can only be added either through the UI or through the Metadata api.

Satish Kumar



You could do something like this using Custom Settings instead of a picklist.  Your page would display all the values in your "Countries" custom setting, and allow the user to add new values as new custom settings.


The Country__c field of the OfficeLocation__c object would just be a text field.


You could add a VisualForce page as an element in the standard detail page layout of the OfficeLocation__c object to allow your users to view/edit the country value.  The Country__c field would not appear on the edit layout.


If you have any questions about this idea, let me know - I will be happy to help you with it.