function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
badrul Hassanbadrul Hassan 

Can anyone know how to Bind External Data in picklist ?

Wrapper class:-

public class MailMergeGroupContactsListwrap  {

public string GroupName{get;set;}
}

Apex Page:-

global class SalesforceVersionInfo
{
  
  public List<MailMergeGroupContactsListwrap> ConsoleWrapperList5{get;set;}
  
  
  //  public List<SFInstance> sfInstances{get;set;}
    public List<MailMergeGroupContactsListwrap> getperformcallout5()
        { 
   // public SalesforceVersionInfo()    {
   
        String jsonString = '[{"GroupContactID":539,"GroupName":"Recently modified Oct 6","TotalContacts":275},{"GroupContactID":538,"GroupName":"New Contacts Oct 6","TotalContacts":973},{"GroupContactID":529,"GroupName":"Egrabber test 2","TotalContacts":3},{"GroupContactID":526,"GroupName":"Unopened List 16","TotalContacts":721},{"GroupContactID":525,"GroupName":"Unopened List 15","TotalContacts":710},{"GroupContactID":524,"GroupName":"Unopened List 14","TotalContacts":700},{"GroupContactID":523,"GroupName":"Uploaded List 13","TotalContacts":700},{"GroupContactID":522,"GroupName":"Unopened List 12","TotalContacts":900},{"GroupContactID":521,"GroupName":"Unopened List 11","TotalContacts":900},{"GroupContactID":520,"GroupName":"Unopened List 10","TotalContacts":900},{"GroupContactID":402,"GroupName":"CS_Seattle_Mgr_10kplus_RQ","TotalContacts":523},{"GroupContactID":371,"GroupName":"List 1 Channel Manger Boston Linkedin","TotalContacts":141},{"GroupContactID":68,"GroupName":"DoD test email list","TotalContacts":3}]';
        ConsoleWrapperList5= (List<MailMergeGroupContactsListwrap>) System.JSON.deserialize(jsonString,List<MailMergeGroupContactsListwrap>.class);
       
   
      return consolewrapperlist5; 
                }
   
    global class MailMergeGroupContactsListwrap implements Comparable
    {
        public String GroupContactID {get;set;}
        public String GroupName {get;set;}
        public String TotalContacts {get;set;}
       
        public Integer compareTo(Object ObjToCompare)
        {
            return GroupContactID.CompareTo(((MailMergeGroupContactsListwrap)ObjToCompare).GroupContactID);
        }
    }
   
}

Visualforce Page :--


<apex:page controller="SalesforceVersionInfo">
<apex:form >
<apex:pageBlock >

 <apex:repeat value="{!performcallout5}" var="val">
 
        {!val.GroupName}<br/>
     
    </apex:repeat>
 
 </apex:pageBlock>

</apex:form>
</apex:page>

I want picklist here.

Thanks....
Best Answer chosen by badrul Hassan
Sumit Kumar Singh 9Sumit Kumar Singh 9
Hello Badrul, 

You can try this one - 
Replace your Apex class with this one - 
global class SalesforceVersionInfo {
    public List<MailMergeGroupContactsListwrap> ConsoleWrapperList5{get;set;}
    public string productName{get;set;}
    
    public SalesforceVersionInfo () {
        getperformcallout5();
    }
     
    public List<MailMergeGroupContactsListwrap> getperformcallout5(){ 
        String jsonString = '[{"GroupContactID":539,"GroupName":"Recently modified Oct 6","TotalContacts":275},{"GroupContactID":538,"GroupName":"New Contacts Oct 6","TotalContacts":973},{"GroupContactID":529,"GroupName":"Egrabber test 2","TotalContacts":3},{"GroupContactID":526,"GroupName":"Unopened List 16","TotalContacts":721},{"GroupContactID":525,"GroupName":"Unopened List 15","TotalContacts":710},{"GroupContactID":524,"GroupName":"Unopened List 14","TotalContacts":700},{"GroupContactID":523,"GroupName":"Uploaded List 13","TotalContacts":700},{"GroupContactID":522,"GroupName":"Unopened List 12","TotalContacts":900},{"GroupContactID":521,"GroupName":"Unopened List 11","TotalContacts":900},{"GroupContactID":520,"GroupName":"Unopened List 10","TotalContacts":900},{"GroupContactID":402,"GroupName":"CS_Seattle_Mgr_10kplus_RQ","TotalContacts":523},{"GroupContactID":371,"GroupName":"List 1 Channel Manger Boston Linkedin","TotalContacts":141},{"GroupContactID":68,"GroupName":"DoD test email list","TotalContacts":3}]';
        ConsoleWrapperList5= (List<MailMergeGroupContactsListwrap>) System.JSON.deserialize(jsonString,List<MailMergeGroupContactsListwrap>.class);
        return consolewrapperlist5; 
    }  
    
    public List<SelectOption> getItems() {
        List<SelectOption> options = new List<SelectOption>();
        for(MailMergeGroupContactsListwrap crRec : ConsoleWrapperList5){
            options.add(new SelectOption(crRec.GroupContactID , crRec.GroupName ));
        }   
        return options;
    }   
}
Replace with your visualforce page with thsi one - 
<apex:page controller="SalesforceVersionInfo">
<apex:form >
<apex:pageBlock >
 <apex:repeat value="{!performcallout5}" var="val">
         {!val.GroupName}<br/>
    </apex:repeat>
    
    <apex:selectList size="1" value="{!productName}">
           PickList from CallOut : &nbsp; <apex:selectOptions value="{!items}"/>
</apex:selectList>
 </apex:pageBlock>
</apex:form>
</apex:page>
Replace your wrapper class with this one - 
public class MailMergeGroupContactsListwrap  implements Comparable {
    public string GroupContactID {get;set;}
    public string GroupName{get;set;}
    public string TotalContacts{get;set;}
    public Integer compareTo(Object ObjToCompare){
       return GroupContactID.CompareTo(((MailMergeGroupContactsListwrap)ObjToCompare).GroupContactID);
    }
}
Pls, let me know if it helps you. 

Thanks,
Sumit Kuamr Singh

All Answers

Sumit Kumar Singh 9Sumit Kumar Singh 9
Hello Badrul Hassan,
Can you please be more specific?
Do you to show the JSON data into PickList? If yes try this -

In the apex class, add this -
public string productName{get;set;}
public List<SelectOption> getItems() {
    List<SelectOption> options = new List<SelectOption>();
    for(MailMergeGroupContactsListwrap crRec : ConsoleWrapperList5){
        options.add(new SelectOption(crRec.GroupContactID , crRec.GroupName ));
    }   
    return options;
}
On the Visulaforce Page, add this -
<apex:selectList size="1" value="{!productName}">
            <apex:selectOptions value="{!items}"/>
</apex:selectList>

Thanks,
Sumit Kumar Singh
badrul Hassanbadrul Hassan

Thanks Sumit for your reply.

It show an error :- Invalid  ConsoleWrapperList5 ??

what is the use of :- public string productName{get;set;}
<apex:selectList size="1" value="{!productName}">

Where i will implement your code ?

Thanks.
Sumit Kumar Singh 9Sumit Kumar Singh 9
Bro, 
Why do you have 2 classes with the same name?? 
I can see one 'MailMergeGroupContactsListwrap' with only one variable 'GroupName'. Second class with the same name inside the 'SalesforceVersionInfo'  class with 3 varaibles. Why??

Either change the name of classes or keep only one delete the other one.

Plese, share the whole Apex Controller and Visualforce Page.

public string productName{get;set;}  - This is to get the value of seleted picklist from the visualforce page.

<apex:selectList size="1" value="{!productName}"> This is to show the picklist on Visualforce Page. Toy can change the name whatever you want.


Thanks,
Sumit Kuamr Singh
Sumit Kumar Singh 9Sumit Kumar Singh 9
Pls Use '<>'  on the editor to increase the code readiability. 
Paste your code again with the help of above icon.
badrul Hassanbadrul Hassan
Wrapper class:-


public class MailMergeGroupContactsListwrap  {
public string GroupContactID {get;set;}
public string GroupName{get;set;}
public string TotalContacts{get;set;}
}


Apex Page:-

global class SalesforceVersionInfo
{
  
  public List<MailMergeGroupContactsListwrap> ConsoleWrapperList5{get;set;}
  
  

    public List<MailMergeGroupContactsListwrap> getperformcallout5()
        { 
  
   
        String jsonString = '[{"GroupContactID":539,"GroupName":"Recently modified Oct 6","TotalContacts":275},{"GroupContactID":538,"GroupName":"New Contacts Oct 6","TotalContacts":973},{"GroupContactID":529,"GroupName":"Egrabber test 2","TotalContacts":3},{"GroupContactID":526,"GroupName":"Unopened List 16","TotalContacts":721},{"GroupContactID":525,"GroupName":"Unopened List 15","TotalContacts":710},{"GroupContactID":524,"GroupName":"Unopened List 14","TotalContacts":700},{"GroupContactID":523,"GroupName":"Uploaded List 13","TotalContacts":700},{"GroupContactID":522,"GroupName":"Unopened List 12","TotalContacts":900},{"GroupContactID":521,"GroupName":"Unopened List 11","TotalContacts":900},{"GroupContactID":520,"GroupName":"Unopened List 10","TotalContacts":900},{"GroupContactID":402,"GroupName":"CS_Seattle_Mgr_10kplus_RQ","TotalContacts":523},{"GroupContactID":371,"GroupName":"List 1 Channel Manger Boston Linkedin","TotalContacts":141},{"GroupContactID":68,"GroupName":"DoD test email list","TotalContacts":3}]';
        ConsoleWrapperList5= (List<MailMergeGroupContactsListwrap>) System.JSON.deserialize(jsonString,List<MailMergeGroupContactsListwrap>.class);
       
   
      return consolewrapperlist5; 
                }
   
    global class MailMergeGroupContactsListwrap implements Comparable
    {
        public String GroupContactID {get;set;}
        public String GroupName {get;set;}
        public String TotalContacts {get;set;}
       
        public Integer compareTo(Object ObjToCompare)
        {
            return GroupContactID.CompareTo(((MailMergeGroupContactsListwrap)ObjToCompare).GroupContactID);
        }
    }
   
}

Visualforce Page :--


<apex:page controller="SalesforceVersionInfo">
<apex:form >
<apex:pageBlock >

 <apex:repeat value="{!performcallout5}" var="val">
 
        {!val.GroupName}<br/>
     
    </apex:repeat>
 
 </apex:pageBlock>

</apex:form>
</apex:page>
badrul Hassanbadrul Hassan
Hello Sumit ,
Please check my code .

Thanks
Sumit Kumar Singh 9Sumit Kumar Singh 9
Hello Badrul, 

You can try this one - 
Replace your Apex class with this one - 
global class SalesforceVersionInfo {
    public List<MailMergeGroupContactsListwrap> ConsoleWrapperList5{get;set;}
    public string productName{get;set;}
    
    public SalesforceVersionInfo () {
        getperformcallout5();
    }
     
    public List<MailMergeGroupContactsListwrap> getperformcallout5(){ 
        String jsonString = '[{"GroupContactID":539,"GroupName":"Recently modified Oct 6","TotalContacts":275},{"GroupContactID":538,"GroupName":"New Contacts Oct 6","TotalContacts":973},{"GroupContactID":529,"GroupName":"Egrabber test 2","TotalContacts":3},{"GroupContactID":526,"GroupName":"Unopened List 16","TotalContacts":721},{"GroupContactID":525,"GroupName":"Unopened List 15","TotalContacts":710},{"GroupContactID":524,"GroupName":"Unopened List 14","TotalContacts":700},{"GroupContactID":523,"GroupName":"Uploaded List 13","TotalContacts":700},{"GroupContactID":522,"GroupName":"Unopened List 12","TotalContacts":900},{"GroupContactID":521,"GroupName":"Unopened List 11","TotalContacts":900},{"GroupContactID":520,"GroupName":"Unopened List 10","TotalContacts":900},{"GroupContactID":402,"GroupName":"CS_Seattle_Mgr_10kplus_RQ","TotalContacts":523},{"GroupContactID":371,"GroupName":"List 1 Channel Manger Boston Linkedin","TotalContacts":141},{"GroupContactID":68,"GroupName":"DoD test email list","TotalContacts":3}]';
        ConsoleWrapperList5= (List<MailMergeGroupContactsListwrap>) System.JSON.deserialize(jsonString,List<MailMergeGroupContactsListwrap>.class);
        return consolewrapperlist5; 
    }  
    
    public List<SelectOption> getItems() {
        List<SelectOption> options = new List<SelectOption>();
        for(MailMergeGroupContactsListwrap crRec : ConsoleWrapperList5){
            options.add(new SelectOption(crRec.GroupContactID , crRec.GroupName ));
        }   
        return options;
    }   
}
Replace with your visualforce page with thsi one - 
<apex:page controller="SalesforceVersionInfo">
<apex:form >
<apex:pageBlock >
 <apex:repeat value="{!performcallout5}" var="val">
         {!val.GroupName}<br/>
    </apex:repeat>
    
    <apex:selectList size="1" value="{!productName}">
           PickList from CallOut : &nbsp; <apex:selectOptions value="{!items}"/>
</apex:selectList>
 </apex:pageBlock>
</apex:form>
</apex:page>
Replace your wrapper class with this one - 
public class MailMergeGroupContactsListwrap  implements Comparable {
    public string GroupContactID {get;set;}
    public string GroupName{get;set;}
    public string TotalContacts{get;set;}
    public Integer compareTo(Object ObjToCompare){
       return GroupContactID.CompareTo(((MailMergeGroupContactsListwrap)ObjToCompare).GroupContactID);
    }
}
Pls, let me know if it helps you. 

Thanks,
Sumit Kuamr Singh
This was selected as the best answer
badrul Hassanbadrul Hassan
Thanks Sumit,
I highly appricate you  :)
 can you plaese share your Skype Id or Email Id ?
 
Sumit Kumar Singh 9Sumit Kumar Singh 9
Sure Bro, 
You can reach me @ skype : sumit3887, emailId : gbu.sumit@gmail.com

Thanks,
Sumit Kumar Singh