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
BehzadBehzad 

RecordWrapper in Constructor

Hey all,

 

I got a wrapper that I use for multiselection. I previously used its code in a component controller, but now I want to use it in a constructor extentsion.

 

Here is the code that I got:

 

public with sharing class partnershipDeactivatorController {

public program__c prog {get;set;}
public distributionPartnership__c dp {get;set;}
public Terminal__c trm {get;set;}
public Location__c [] locs = new Location__c[0];
public Terminal__c [] trms = new Terminal__c[0];


public distributionPartnership__c [] dps = new distributionPartnership__c[0];
public List<String> recordIds {get;set;}


public string progId {get;set;}
public string retUrl {get;set;}
public string idsToSplit {get;set;}
public string schedule {get;set;}
public string cmd {get;set;}

//Variables for multiselector on Deactivation Partnerhisp Page
public boolean topCheckbox {get; set;}
List<rcrdWrapper> rcrdList {get;set;}

//Constructor
public ApexPages.StandardController controller;
public partnershipDeactivatorController(ApexPages.StandardController controller) {
this.controller = controller;
//make it easy to map page params
PageReference pageRef = ApexPages.CurrentPage();
Map<String, String> page = pageRef.getParameters();

dp = (distributionPartnership__c) controller.getrecord();
Terminal__c trm = new Terminal__c();

progId = page.get('progId');
retUrl = page.get('retUrl');

if (progId != null) {
prog = getProg();
dp.Program__c = prog.id;
}

string s = page.get('records');
this.idsToSplit = s;
this.recordIds = this.idsToSplit.split(',',0);

}

//Get the locations from the list of ids specified
public Terminal__c[] getTrms(){
Trms = [
SELECT
id,
distributionPartnership__c,
Type__c,
Location__c
FROM Terminal__c
WHERE distributionPartnership__c IN :recordIds
];
return Trms;
}

//Get the program
public program__c getProg(){
prog = [select
id,
group__c
from program__c
where id = :progId
limit 1
];
return prog;
}
public void cmdBtn(){
}

//{!rcrds} is the pageBlockTable value to render
public List<rcrdWrapper> rcrds
{
get
{
if (rcrdList == null)
{
rcrdList = new List<rcrdWrapper>();
Terminal__c[] trms = [
SELECT
id,
distributionPartnership__c,
Type__c,
Location__c
FROM Terminal__c
WHERE distributionPartnership__c IN :recordIds
];

for(Terminal__c trm : trms)
rcrdList.add(new rcrdWrapper(trm));

}
return rcrdList;
}
}

private List<rcrdWrapper> selectedRows
{
get
{
List<rcrdWrapper> selectedRows = new List<rcrdWrapper>();

for(rcrdWrapper row : rcrds)
if(row.selected == true)
selectedRows.add(row);

return selectedRows;
}
}

public class rcrdWrapper
{
public distributionPartnership__c rcrd{get; set;}
public Boolean selected {get; set;}

public rcrdWrapper(distributionPartnership__c dp)
{
rcrd = dp;
selected = false;
}
}
}

 

 

The highlighted codes is givving me the following error:

 

Save error: Constructor not defined:
 [partnershipDeactivatorController.rcrdWrapper].<Constructor>(SOBJECT:Terminal__c)

 

I understand this error code, but I don't know how to define the recordWrapper in my constructor.

 

Your help is greatly appreciated.

 

Thanks,

 

Behzad

Best Answer chosen by Admin (Salesforce Developers) 
BehzadBehzad

I had to change the public class rcrdWrapper to point to the right object, as shown below:

 

    public class rcrdWrapper
    {
        public Terminal__c rcrd{get; set;}
        public Boolean selected {get; set;}
        
        public rcrdWrapper(Terminal__c trm)
        {
            rcrd = trm;
            selected = false;
        }
    }         
}