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
Rahul Bhattad 4Rahul Bhattad 4 

How to hold old value in selectlist after page refresh

I have a VF page in which I have created a picklist using SelectList and SelectOption. I am now facing final hurdle: Selected value getting changed to default one once I click on Save. I am not sure how should I save the value of SelectList without it being revert back to default one.

This is some part of my VF page:
<apex:pageBlockSection title="Technical Approval" id="techapprovalsection" >
         <apex:pageBlock> 
           <apex:pageBlockSectionItem >
               <apex:outputLabel value="Technical Approver 1"></apex:outputLabel>
               <apex:selectList multiselect="false" required="true" value="{!TechnicalApprover1}" size="1">
                <apex:selectOptions value="{!TechnicalAppList}"/>
               </apex:selectList>
             </apex:pageBlockSectionItem>
           </apex:pageBlock>

         <apex:pageBlock >
           <apex:pageBlockButtons location="bottom">
             <apex:commandButton value="Save" action="{!dosave}"/>
           </apex:pageBlockButtons>
         </apex:pageBlock>

Below is some portion of my Controller class:
public class SubmitforApprovalController {
public SubmitforApprovalController() {
searchTechApproval(OfferType, SalesPrice, MOMargin, objMO);
}

public List<SelectOption> searchTechApproval(String OfferType, Decimal SalesPrice, Decimal MOMargin, Custom1__c objMO)
{
 QueriedTechApprovers= [Select Id, Name,                    Approval_Level__c, GID__c, Mail__c, 
                                         Offer_Type__c, SalesPrice_Range__c, Signature__c, 
                                        TotalMargin_Range__c, Max_Stages__c, Stage__c, 
                                        First_Name__c, Last_Name__c from Approver__c 
                                        Where Sales_Volume_LB__c <= :TotalPrice AND 
                                        Sales_Volume_UB__c > :TotalPrice];
if(QueriedTechApprovers.size()>0){
            TechnicalApprover1 = QueriedTechApprovers[0].Name;

if(QueriedSalesApprovers.size()>0){
        for(Approver__c app : QueriedSalesApprovers){
          lstSalesApprovers.add(new SelectOption (app.Name,app.Name));
 }
}

public pageReference dosave(){
if(!String.isEmpty(TechnicalApprover1) && QueriedTechApprovers.size()>0){
       Approver__c TechApproverChange1 = [Select Id, Name, Stage__c,First_Name__c, Last_Name__c from Approver__c WHERE ID =: TechIDs AND Name =: TechnicalApprover1 LIMIT 1];
        Approval__c apptech1 = new Approval__c();
        apptech1.Main_Offer_Name__c = objMO.Id;
        apptech1.Approver_Name__c = TechApproverChange1.Id;
        apptech1.Stage__c = TechApproverChange1.Stage__c;
        insert apptech1;
        isTechApprover = true;
     }

Whenever I click on Save button, page refreshes and value of picklist changes to default one set by controller. I want it to remain as it is.
ShirishaShirisha (Salesforce Developers) 
Hi Rahul,

Greetings!

I would suggest you to store the value given by the selectOption on VF page and update it on the save Button.

Here is the reference article with the sample code which will help you in troubleshooting your custom code:

https://developer.salesforce.com/docs/atlas.en-us.pages.meta/pages/pages_compref_selectList.htm

Kindly let me know if it helps you and close your query by marking it as solved so that it can help others in the future.

Warm Regards,
Shirisha Pathuri