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
Developer.mikie.Apex.StudentDeveloper.mikie.Apex.Student 

How to make my wrapper class access record. - Please Help

Hi There,

I have a wrapper class, it is used to create a finance__c record and multiple children finance loan split and finance Loan securities. This allows me to save at once and they are all joined. 

I am attempting to make it so that the controller can be used to edit the same records. I have a roundabout idea of what I am meant to do....I have evn been able to access the main Fin record, however every attempt I have made at filling the wrapper list when accessing a record (rather than inserting)...I always get no results. Please can someone point me in the right direction of how I might access a list of already created Finance Loan split records and display them in my datatable.

thank you in advance for your time. My controller is below:

 

public class FinanceNew2{
    
    public Finance__c Fin { get; set; }
    public Finance_Loan_Security__c LoanSecurity { get; set; }
    public Finance_Loan_Split__c LoanSplit { get; set; }
    
    
    //Wrapper multi add try to implement
     public List<FinLoanSplitWrapper> wrappers {get; set;}
 public static Integer toDelIdent {get; set;}
 public static Integer addCount {get; set;}
 private Integer nextIdent=0;
 
 //\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\Wrapper 2 identical - 1
       public List<FinLoanSecurityWrapper> wrappers2 {get; set;}
 public static Integer toDelIdent2 {get; set;}
 public static Integer addCount2 {get; set;}
 private Integer nextIdent2=0;
 
 //\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\Wrapper 2 identical - 1
  Id FinId = ApexPages.currentPage().getParameters().get('FinId');
 ////////////////test
 
 public decimal AggregateLoanAmount{get;set;}
 public integer LoanSplitSize{get;set;}
 
 public void calculation()
{
AggregateLoanAmount = 0.00;
LoanSplitSize = 0;
  for (FinLoanSplitWrapper wrap : wrappers)
  {
  if(wrap.FinLoanS.Loan_Amount__c == null){
  wrap.FinLoanS.Loan_Amount__c = 0.00;
  }
   LoanSplitSize = LoanSplitSize + 1;
   AggregateLoanAmount = AggregateLoanAmount + wrap.FinLoanS.Loan_Amount__c;
  }
  Fin.Number_of_Securities__c = LoanSplitSize;

}

 ////////////////test









////////////////////Delete Rows
//Delete Rows 1 
public void delWrapper()
 {
  Integer toDelPos=-1;
  for (Integer idx=0; idx<wrappers.size(); idx++)
  {
   if (wrappers[idx].ident==toDelIdent)
   {
    toDelPos=idx;
   }
  }
   
  if (-1!=toDelPos)
  {
   wrappers.remove(toDelPos);
  }
 }



//Delete Rows 2
  public void delWrapper2()
 {
  Integer toDelPos=-1;
  for (Integer idx=0; idx<wrappers2.size(); idx++)
  {
   if (wrappers2[idx].ident2==toDelIdent2)
   {
    toDelPos=idx;
   }
  }
   
  if (-1!=toDelPos)
  {
   wrappers2.remove(toDelPos);
  }
 }







 //////////////////////////Add Rows
 //Add Rows 1
 public void addRows()
 {
  for (Integer idx=0; idx<addCount; idx++)
  {
   wrappers.add(new FinLoanSplitWrapper(nextIdent++, null));
  }
 }
//Add Rows 2
 public void addRows2()
 {
  for (Integer idx=0; idx<addCount2; idx++)
  {
   wrappers2.add(new FinLoanSecurityWrapper(nextIdent2++));
  }
 }
  //////////////////////////Add Rows
 
 
 
 
 
 
 
 
 
 
 
 ////////////////Wrappers
 public class FinLoanSplitWrapper
 {
  public Finance_Loan_Split__c FinLoanS {get; private set;}
  public Integer ident {get; private set;}
   
  public FinLoanSplitWrapper(Integer inIdent , Finance_Loan_Split__c LoanSplit)
  {
   Id FinId = ApexPages.currentPage().getParameters().get('FinId');
 if(LoanSplit!= null){
   FinLoans = LoanSplit;   
   ident=integer.valueof(LoanSplit.Loan_Split_Number__c);
   }else{
   FinLoanS=new Finance_Loan_Split__c(Loan_Split_Number__c=ident);
   }
   
   
  
  }
 }
  
 public class FinLoanSecurityWrapper
 {
  public Finance_Loan_Security__c FinSecS {get; private set;}
  public Integer ident2 {get; private set;}
   
  public FinLoanSecurityWrapper(Integer inIdent)
  {
   ident2=inIdent;
   FinSecS=new Finance_Loan_Security__c(Loan_Security_Number__c=ident2);
  }
 }
 
  ////////////////Wrappers











     //Wrapper multi add try to implement   
/*
    public List<FinLoanSplitWrapper> getWrappers() {
 Id FinId = ApexPages.currentPage().getParameters().get('FinId');
 if(FinId != null){
 if(wrappers == null) { 
     
      wrappers=new List<FinLoanSplitWrapper>();
      for(Finance_Loan_Split__c LoanSplit:[SELECT Id, Account__c ,Office__c, Loan_Split_Number__c, Loan_Amount__c ,Loan_Type__c,Payment_Type__c,
      Loan_Purpose__c,Comment__c
       FROM Finance_Loan_Split__c
                   WHERE Id = :FinId]){
                   
                 wrappers.add(new FinLoanSplitWrapper((integer.valueof(LoanSplit.Loan_Split_Number__c)),LoanSplit));
                   }
                   }
        
        }
        return wrappers;
    }   
   */ 
  

 public FinanceNew2() {
     
     Id FinId = ApexPages.currentPage().getParameters().get('FinId');
     if(FinId != null){
     Fin = [SELECT Id, Application_End_Reason__c, Financier__c, Financier_Reference__c, Application_LVR__c ,
     Total_Security_Value__c, Loan_Information__c , Account__c , Finance_Office__c, Settlement_Due__c, Finance_Clause__c, Number_of_Securities__c FROM Finance__c
                   WHERE Id = :ApexPages.currentPage().getParameters().get('FinId')];
                
 if(wrappers == null) { 
     
      wrappers=new List<FinLoanSplitWrapper>();
      for(Finance_Loan_Split__c LoanSplit:[SELECT Id, Account__c ,Office__c, Loan_Split_Number__c  FROM Finance_Loan_Split__c
                   WHERE Id = :FinId]){
                   
                 wrappers.add(new FinLoanSplitWrapper(null,LoanSplit));
                   }
                   }
        
        
               
     List<Finance_Loan_Security__c> LoanSecurity = [SELECT Id, Account__c ,Office__c  FROM Finance_Loan_Security__c
                   WHERE Id = :FinId];  
     
 
      wrappers2=new List<FinLoanSecurityWrapper>();
  for (Integer idx=0; idx<1; idx++)
  {
   wrappers2.add(new FinLoanSecurityWrapper(nextIdent2++));
  }
    
     
     }else{
     Fin = new Finance__c ();
     Fin.Finance_Office__c = ApexPages.currentPage().getParameters().get('OffId');
     Fin.Account__c = ApexPages.currentPage().getParameters().get('AccId');
      
      
    //LoanSecurity = new Finance_Loan_Security__c ();
      wrappers=new List<FinLoanSplitWrapper>();
  for (Integer idx=0; idx<1; idx++)
  {
   wrappers.add(new FinLoanSplitWrapper(nextIdent++, null));
  }
      wrappers2=new List<FinLoanSecurityWrapper>();
  for (Integer idx=0; idx<1; idx++)
  {
   wrappers2.add(new FinLoanSecurityWrapper(nextIdent2++));
  }

}  
      
    }
    
//////////////////////////Save and Cancel\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\    
    public PageReference saveStandard() {
    
    Fin.Aggregate_Borrowings__c = AggregateLoanAmount;
    
    
     try {  
      upsert Fin;
        
        } catch (Exception e) {     
      
             ApexPages.addMessages(e);         
        }
        
 List<Finance_Loan_Split__c> FLS =new List<Finance_Loan_Split__c>();
  for (FinLoanSplitWrapper wrap : wrappers)
  {
   FLS.add(wrap.FinLoanS);
  }

 List<Finance_Loan_Security__c> LoanSecurity =new List<Finance_Loan_Security__c>();
  for (FinLoanSecurityWrapper wrap : wrappers2)
  {
   LoanSecurity.add(wrap.FinSecS);
  }
  
  for (Finance_Loan_Split__c FinLoanSplit: FLS)
  {
    FinLoanSplit.Finance__c = Fin.id;
   FinLoanSplit.Account__c = Fin.Account__c;
   FinLoanSplit.Office__c = Fin.Finance_Office__c;
  }
  
    for (Finance_Loan_Security__c LoanSec: LoanSecurity)
  {
    LoanSec.Finance__c = Fin.id;
   LoanSec.Account__c = Fin.Account__c;
   LoanSec.Office__c = Fin.Finance_Office__c;
  }            
        
        try { 
        
        upsert FLS;
        upsert LoanSecurity;
       
       
        PageReference pageRef= new PageReference('/apex/DestinyAccount?id='+fin.Account__c+'&Sfdc.override=1');
        return pageRef;
        } catch (Exception e) {     
      
             ApexPages.addMessages(e);         
        }
        
        
        
        return null;
    
    }
    
      
    public PageReference Cancel() {
   
        PageReference pageRef= new PageReference('/apex/DestinyAccount?id='+Fin.account__c+'&Sfdc.override=1');
        return pageRef;
     
    }
//////////////////////////Save and Cancel\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\    
//////////////////////Old Code to keep for Reference - Delete Later\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\   
    /* Remove for now, keep for ref
 public PageReference save2()
 {
  List<Finance_Loan_Security__c> LoanSecurity =new List<Finance_Loan_Security__c>();
  for (FinLoanSecurityWrapper wrap : wrappers2)
  {
   LoanSecurity.add(wrap.FinSecS);
  }
   
  insert LoanSecurity;
   
  return new PageReference('/' + Schema.getGlobalDescribe().get('Finance_Loan_Split__c').getDescribe().getKeyPrefix() + '/o');
 }
*/

  /* Remove for now, as it has been made redunant. keep for reference incase soemthing goes wrong
 public PageReference save()
 {
  List<Finance_Loan_Split__c> FLS =new List<Finance_Loan_Split__c>();
  for (FinLoanSplitWrapper wrap : wrappers)
  {
   FLS.add(wrap.FinLoanS);
  }
   
  insert FLS;
   
  return new PageReference('/' + Schema.getGlobalDescribe().get('Finance_Loan_Split__c').getDescribe().getKeyPrefix() + '/o');
 }
 */

//////////////////////Old Code to keep for Reference - Delete Later\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\    
 
    
}
NagaNaga (Salesforce Developers) 
Hi Mikie,

Please see the below sample code which dislays the wrapper class which accesses the object records and also presents them on the screen.

User-added imagePlease follow the below link for more info

https://developer.salesforce.com/page/Wrapper_Class

Best Regards
Naga Kiran
Developer.mikie.Apex.StudentDeveloper.mikie.Apex.Student
Thanks Naga for your reply!

I manmaged to get it working, but still some issues with adding new rows. This is how i got it working:
 
public class FinanceNew2{
    
    public Finance__c Fin { get; set; }
    public Finance_Loan_Security__c LoanSecurity { get; set; }
    public Finance_Loan_Split__c LoanSplit { get; set; }
    
    
    //Wrapper multi add try to implement
     public List<FinLoanSplitWrapper> wrappers {get; set;}
 public static Integer toDelIdent {get; set;}
 public static Integer addCount {get; set;}
 private Integer nextIdent=0;
 
 //\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\Wrapper 2 identical - 1
       public List<FinLoanSecurityWrapper> wrappers2 {get; set;}
 public static Integer toDelIdent2 {get; set;}
 public static Integer addCount2 {get; set;}
 private Integer nextIdent2=0;
 
 //\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\Wrapper 2 identical - 1
  Id FinId = ApexPages.currentPage().getParameters().get('FinId');
 ////////////////test
 
 public integer LoanSplitSize{get;set;}
 
 
 public void calculation()
{
Fin.Aggregate_Borrowings__c = 0.00;
Fin.Number_of_Splits__c = 0;
  for (FinLoanSplitWrapper wrap : wrappers)
  {
  if(wrap.FinLoanS.Loan_Amount__c == null){
  wrap.FinLoanS.Loan_Amount__c = 0.00;
  }
   Fin.Number_of_Splits__c = Fin.Number_of_Splits__c + 1;
   Fin.Aggregate_Borrowings__c = Fin.Aggregate_Borrowings__c + wrap.FinLoanS.Loan_Amount__c;
  }
  Fin.Number_of_Securities__c = LoanSplitSize;

}

 ////////////////test









////////////////////Delete Rows
//Delete Rows 1 
public void delWrapper()
 {
  Integer toDelPos=-1;
  for (Integer idx=0; idx<wrappers.size(); idx++)
  {
   if (wrappers[idx].ident==toDelIdent)
   {
    toDelPos=idx;
   }
  }
   
  if (-1!=toDelPos)
  {
   wrappers.remove(toDelPos);
  }
 }



//Delete Rows 2
  public void delWrapper2()
 {
  Integer toDelPos=-1;
  for (Integer idx=0; idx<wrappers2.size(); idx++)
  {
   if (wrappers2[idx].ident2==toDelIdent2)
   {
    toDelPos=idx;
   }
  }
   
  if (-1!=toDelPos)
  {
   wrappers2.remove(toDelPos);
  }
 }







 //////////////////////////Add Rows
 //Add Rows 1
 public void addRows()
 {
  for (Integer idx=0; idx<addCount; idx++)
  {
   wrappers.add(new FinLoanSplitWrapper(nextIdent++, null));
  }
 }
//Add Rows 2
 public void addRows2()
 {
  for (Integer idx=0; idx<addCount2; idx++)
  {
   wrappers2.add(new FinLoanSecurityWrapper(nextIdent2++,null));
  }
 }
  //////////////////////////Add Rows
 
 
 
 
 
 
 
 
 
 
 
 ////////////////Wrappers
 public class FinLoanSplitWrapper
 {
  public Finance_Loan_Split__c FinLoanS {get; private set;}
  public Integer ident {get; private set;}
   
  public FinLoanSplitWrapper(Integer inIdent , Finance_Loan_Split__c LoanSplit)
  {
  ident=inident;
   Id FinId = ApexPages.currentPage().getParameters().get('FinId');
 if(FinId != null){
   FinLoans = LoanSplit;     
   }else{
   FinLoanS=new Finance_Loan_Split__c(Loan_Split_Number__c=ident);
   }
   
   
  
  }
 }
  
 public class FinLoanSecurityWrapper
 {
  public Finance_Loan_Security__c FinSecS {get; private set;}
  public Integer ident2 {get; private set;}
   
  public FinLoanSecurityWrapper(Integer inIdent, Finance_Loan_Security__c LoanSecurity )
  {
   ident2=inIdent;
     Id FinId = ApexPages.currentPage().getParameters().get('FinId');
 if(FinId != null){
     FinSecS = LoanSecurity;
     }else{
   FinSecS=new Finance_Loan_Security__c(Loan_Security_Number__c=ident2);
   }
   
   
  }
 }
 
  ////////////////Wrappers











     //Wrapper multi add try to implement 

  

 public FinanceNew2() {
     
     Id FinId = ApexPages.currentPage().getParameters().get('FinId');
     if(FinId != null){
     Fin = [SELECT Id, Application_End_Reason__c, Financier__c, Financier_Reference__c, Application_LVR__c ,
     Total_Security_Value__c, Loan_Information__c , Account__c , Finance_Office__c, Settlement_Due__c, Finance_Clause__c, Number_of_Securities__c,Number_of_Splits__c ,
     Aggregate_Borrowings__c  FROM Finance__c
                   WHERE Id = :ApexPages.currentPage().getParameters().get('FinId')];
                
 if(wrappers == null) { 
     
      wrappers=new List<FinLoanSplitWrapper>();
      for(Finance_Loan_Split__c LoanSplit:[SELECT Id, Account__c ,Office__c, Loan_Split_Number__c, Loan_Amount__c ,Loan_Type__c,Payment_Type__c,
      Loan_Purpose__c,Comment__c, finance__c  FROM Finance_Loan_Split__c
                   WHERE finance__c  = :FinId]){
                   
                   nextIdent = Integer.valueof(LoanSplit.Loan_Split_Number__c);
                   
                 wrappers.add(new FinLoanSplitWrapper(nextIdent,LoanSplit));
                   }
                   }
                  
 if(wrappers2 == null) { 
     
      wrappers2=new List<FinLoanSecurityWrapper>();
      for(Finance_Loan_Security__c LoanSecurity :[SELECT Id, Account__c ,Office__c,Loan_Security_Number__c,New_Existing__c,Estimated_Value__c,No_Street__c,
      Suburb__c,State__c ,Postcode__c ,Actual_Value__c,Valuation_Date__c , Rental_Yield__c, Contact__c,Finance__c  FROM Finance_Loan_Security__c
                   WHERE finance__c  = :FinId]){
                   
                   nextIdent2 = Integer.valueof(LoanSecurity.Loan_Security_Number__c);
                   
                 wrappers2.add(new FinLoanSecurityWrapper(nextIdent2,LoanSecurity));
                   }
                   }
                
    
     
     }else{
     Fin = new Finance__c ();
     Fin.Finance_Office__c = ApexPages.currentPage().getParameters().get('OffId');
     Fin.Account__c = ApexPages.currentPage().getParameters().get('AccId');
      
      
    //LoanSecurity = new Finance_Loan_Security__c ();
      wrappers=new List<FinLoanSplitWrapper>();
  for (Integer idx=0; idx<1; idx++)
  {
   wrappers.add(new FinLoanSplitWrapper(nextIdent++, null));
  }
      wrappers2=new List<FinLoanSecurityWrapper>();
  for (Integer idx=0; idx<1; idx++)
  {
   wrappers2.add(new FinLoanSecurityWrapper(nextIdent2++,null));
  }

}  
      
    }
    
//////////////////////////Save and Cancel\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\    
    public PageReference saveStandard() {
    
   
    
     try {  
      upsert Fin;
        
        } catch (Exception e) {     
      
             ApexPages.addMessages(e);         
        }
        
 List<Finance_Loan_Split__c> FLS =new List<Finance_Loan_Split__c>();
  for (FinLoanSplitWrapper wrap : wrappers)
  {
   FLS.add(wrap.FinLoanS);
  }

 List<Finance_Loan_Security__c> LoanSecurity =new List<Finance_Loan_Security__c>();
  for (FinLoanSecurityWrapper wrap : wrappers2)
  {
   LoanSecurity.add(wrap.FinSecS);
  }
  
  for (Finance_Loan_Split__c FinLoanSplit: FLS)
  {
  If(FinLoanSplit.Finance__c == null){
    FinLoanSplit.Finance__c = Fin.id;
    }
  If(FinLoanSplit.Account__c == null){
   FinLoanSplit.Account__c = Fin.Account__c;
   }
   If(FinLoanSplit.Office__c == null){
   FinLoanSplit.Office__c = Fin.Finance_Office__c;
   }
  }
  
    for (Finance_Loan_Security__c LoanSec: LoanSecurity)
  {
   If(LoanSec.Finance__c == null){
    LoanSec.Finance__c = Fin.id;
    }
    If(LoanSec.Account__c == null){
   LoanSec.Account__c = Fin.Account__c;
   }
   If(LoanSec.Office__c == null){
   LoanSec.Office__c = Fin.Finance_Office__c;
   }
  }            
        
        try { 
        
        upsert FLS;
        upsert LoanSecurity;
       
       
        PageReference pageRef= new PageReference('/apex/DestinyAccount?id='+fin.Account__c+'&Sfdc.override=1');
        return pageRef;
        } catch (Exception e) {     
      
             ApexPages.addMessages(e);         
        }
        
        
        
        return null;
    
    }
    
      
    public PageReference Cancel() {
   
        PageReference pageRef= new PageReference('/apex/DestinyAccount?id='+Fin.account__c+'&Sfdc.override=1');
        return pageRef;
     
    }
//////////////////////////Save and Cancel\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\    
//////////////////////Old Code to keep for Reference - Delete Later\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\   
    /* Remove for now, keep for ref
 public PageReference save2()
 {
  List<Finance_Loan_Security__c> LoanSecurity =new List<Finance_Loan_Security__c>();
  for (FinLoanSecurityWrapper wrap : wrappers2)
  {
   LoanSecurity.add(wrap.FinSecS);
  }
   
  insert LoanSecurity;
   
  return new PageReference('/' + Schema.getGlobalDescribe().get('Finance_Loan_Split__c').getDescribe().getKeyPrefix() + '/o');
 }
*/

  /* Remove for now, as it has been made redunant. keep for reference incase soemthing goes wrong
 public PageReference save()
 {
  List<Finance_Loan_Split__c> FLS =new List<Finance_Loan_Split__c>();
  for (FinLoanSplitWrapper wrap : wrappers)
  {
   FLS.add(wrap.FinLoanS);
  }
   
  insert FLS;
   
  return new PageReference('/' + Schema.getGlobalDescribe().get('Finance_Loan_Split__c').getDescribe().getKeyPrefix() + '/o');
 }
 */

//////////////////////Old Code to keep for Reference - Delete Later\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\    
 
    
}