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
Sophia GSophia G 

Pass selected record on first Visualforce page, to a second Visualforce page look up field?

Hi,

Could someone please help me with the code to pass the selected record from a list on visualforce page 1, to a registration form on  visualforce page 2. I need this record to populate into the lookup field on the second visualforce page "Division". These fields have a Master Detail relationship (the Division is Master, Competitor is child) Please see below. I have been struggling with this and can't figure out the correct code.
 
VISUALFORCE PAGE 1:

<apex:page controller="NFOSController">
     
    <apex:form >
        <apex:pageBlock title="Division Types">
            <apex:pageBlockButtons location="bottom">
            <apex:commandButton action="{!NFOS1}" value="Add Competitor" rerender="PB1,PB2"/>
            </apex:pageBlockButtons>
           <apex:pageBlockTable value="{!divList}" var="divWrapper">
                <apex:column >
               <apex:inputCheckbox value="{!divWrapper.isSelected}"/>
            </apex:column> 
            <apex:column value="{!divWrapper.cDivision.Name}"/>
            <apex:column value="{!divWrapper.cDivision.Availability__c}"/>
                <apex:column value="{!divWrapper.cDivision.Number_of_Competitors__c}"/>
                <apex:column value="{!divWrapper.cDivision.Active__c}"/>
               <apex:column value="{!divWrapper.cDivision.Id}"/>
         </apex:pageBlockTable>
                   
        </apex:pageBlock>
    </apex:form>
</apex:page>
 
VISUALFORCE PAGE 2

<apex:page standardcontroller="Competitor2__c" extensions="NFOSController" lightningStylesheets="true">
<apex:sectionHeader title="Noosa Festival of Surfing" />
       <apex:form id="NFOS1"> 
        
    <apex:pageBlock title="New Competitor" mode="edit">
		     <apex:pageBlockButtons location="bottom">
              <apex:commandButton value="Save" action="{!save}"/>
		        </apex:pageBlockButtons>
				
			<apex:pageBlockSection columns="2" showHeader="true" title="Registration" >
                <apex:inputField value="{!comp.Name}" required="false"/>
				<apex:inputField value="{!comp.Division_Space__c}" required="false"/>
                <apex:inputField value="{!comp.First_Name__c}" required="false"/>
				<apex:inputField value="{!comp.Date_of_Birth__c}" required="false"/>
                <apex:inputField value="{!comp.Lastname__c}" required="false"/>
				<apex:inputField value="{!comp.Waiver_Read_T_Cs_Accepted__c}" required="false"/>
				<apex:inputField value="{!comp.Email_Address__c}" required="false"/>
				<apex:pageBlockSectionItem />
				<apex:inputField value="{!comp.Phone_Number__c}" required="false"/>
				<apex:pageBlockSectionItem />
				<apex:inputField value="{!comp.Street_Address__c}" required="false"/>
				<apex:pageBlockSectionItem />
				<apex:inputField value="{!comp.Suburb__c}" required="false"/>
				<apex:pageBlockSectionItem />
				<apex:inputField value="{!comp.State__c}" required="false"/>
				<apex:pageBlockSectionItem />
				<apex:inputField value="{!comp.Postcode__c}" required="false"/>
				<apex:pageBlockSectionItem />
				<apex:inputField value="{!comp.Country__c}" required="false"/>
				<apex:pageBlockSectionItem />
                <apex:inputField value="{!comp.Id}" required="false"/>
			</apex:pageBlockSection>	
   
      			
		</apex:pageBlock>
	</apex:form>
</apex:page>
 
CONTROLLER

public with sharing class NFOSController {
    
   
     public Competitor2__c comp{get;set;}
     public List<DivisionWrapper> divList {get;set;}
     public Set<String> selDivisionNames {get;set;}
     public Boolean hasSelDiv {get;set;}
    

     
     public NFOSController(){
          DivList = new List<DivisionWrapper>();
          selDivisionNames = new Set<String>();

          for(Division_Space2__c d : [SELECT Id, Name, Availability__c, Number_of_Competitors__c, Active__c
          FROM Division_Space2__c WHERE Name!= NULL 
          LIMIT 5]){
               divList.add(new DivisionWrapper(d));
              
              comp= new Competitor2__c();
          }
     }
     public PageReference save()
    {
        if(comp.Name != null){
            insert comp;
          
        }       
        return stdController.save();
    }
    
   
     public void displaySelectedDivisionNames(){
          selDivisionNames.clear();
          hasSelDiv = false;
          for(DivisionWrapper cWrapper : divList){
               if(cWrapper.isSelected){
                    hasSelDiv = true;
                    selDivisionNames.add(cWrapper.cDivision.Name);
               }
          }
              }
      public PageReference NFOS1() {
        ApexPages.currentPage().getParameters().get('Id')
        ;PageReference pageRef = new PageReference('/apex/NFOS1');
        pageRef.setRedirect(false);
        return pageRef; 
      }
    public NFOSController(ApexPages.StandardController stdController)
    { 
         this.comp = (Competitor2__c)stdController.getRecord();
        this.stdController = stdController;
    } 
    ApexPages.StandardController stdController;
    
         
     public class DivisionWrapper {
     public Boolean isSelected {get;set;}
     public Division_Space2__c cDivision {get;set;}

     public DivisionWrapper(Division_Space2__c cDivision){
          this.cDivision = cDivision;
     }
     }
}
Best Answer chosen by Sophia G
ANUTEJANUTEJ (Salesforce Developers) 
Hi Sophia,

One possible solution would be to keep the controller same on both pages but I would suggest you try checking this link as it mentions one more solution.

>> https://developer.salesforce.com/forums/?id=906F000000099KjIAI

I hope this helps and in case if this comes in handy can you please choose this as the best answer so that it can be useful for others in the future.

Regards,
Anutej