Sunday, April 21, 2013

Creating Multiselect Picklist on Visualforce Page

Visualforce Page:


<apex:page controller="multiselectcls">
<apex:form >
<apex:panelGrid columns="3" id="abcd">

<apex:selectList id="sel1" value="{!leftselected}" multiselect="true" style="width:100px" size="5">
<apex:selectOptions value="{!unselectedvalues}" />
</apex:selectList>

<apex:panelGroup >
<br/>
<apex:CommandButton value="  >  " action="{!selectclick}"/> <br/>
<apex:CommandButton value="  <  " action="{!unselectclick}"/>
</apex:panelGroup>

<apex:selectList id="sel2" value="{!rightselected}" multiselect="true" style="width:100px" size="5">
<apex:selectOptions value="{!SelectedValues}" />
</apex:selectList>

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

Apex Class:


public with sharing class multiselectcls
{
     Set<String> originalvalues = new Set<String>{'A','B','C','D','E','F','G'};    
     Public List<string> leftselected{get;set;}    
     Public List<string> rightselected{get;set;}    
     Set<string> leftvalues = new Set<string>();    
     Set<string> rightvalues = new Set<string>(); 
             
     public multiselectcls()
     {        
     leftselected = new List<String>();        
     rightselected = new List<String>();        
     leftvalues.addAll(originalValues);    
     }         
     public PageReference selectclick()
     {        
     rightselected.clear();        
     for(String s : leftselected)
     {            
     leftvalues.remove(s);            
     rightvalues.add(s);        
     }        
     return null;    
     }        
      public PageReference unselectclick()
      {        
      leftselected.clear();        
      for(String s : rightselected)
      {            
      rightvalues.remove(s);            
      leftvalues.add(s);        
      }        
      return null;    
      }     
      public List<SelectOption> getunSelectedValues()
      {        
      List<SelectOption> options = new List<SelectOption>();        
      List<string> tempList = new List<String>();        
      tempList.addAll(leftvalues);        
      tempList.sort();        
      for(string s : tempList)            
      options.add(new SelectOption(s,s));        
      return options;    
      }     
      public List<SelectOption> getSelectedValues()
      {        
      List<SelectOption> options1 = new List<SelectOption>();        
      List<string> tempList = new List<String>();        
      tempList.addAll(rightvalues);        
      tempList.sort();        
      for(String s : tempList)            
      options1.add(new SelectOption(s,s));        
      return options1;    
      }
}

No comments:

Post a Comment