+1 vote
25 views
by (163k points)

I have an extension that allows users to input information and I am trying to add delete functionality to each record in apex:pageBlockTable. How can I edit my extension code to add this?

What I've tried:

    public with sharing class ecrjcClass{
    
    public class participantWrapper{
        public participant__c par {get;set;}
        public Boolean checked {get;set;}
        
        public participantWrapper(participant__c par, Boolean checked){
            this.par = par;
            this.checked = checked;
        }
    }
    
    public Participant__c record {get;set;}
    public List<Participant__c> allrecords {get;set;}
    public Referral__c ref {get;set;}
    public Boolean checked {get;set;}


    public ecrjcClass(){
        record = new Participant__c();
        allrecords = new List<Participant__c>();
        ref = new Referral__c();
    }   

    //Add a record row
    public pageReference Add_Row(){

        Participant__c anotherRecord = new Participant__c();   
        anotherRecord.Name = record.Name;
        anotherRecord.Last_Name__c = record.Last_Name__c;
        anotherRecord.Age__c = record.Age__c;
        anotherRecord.Victim_Offender__c = record.Victim_Offender__c;
        anotherRecord.Phone__c = record.Phone__c;
        
        insert ref;
        
        anotherRecord.Referral__c = ref.Id;
        //Issue: Need to insert ref first
        allrecords.add(new participantWrapper(anotherRecord, false));
        return null;        
        
    }
    
    //Save and insert records in list
    public pageReference save(){
        
        insert allrecords;
        return null;
            
    }
    
    //Delete button on each record on apex table
public void deleteChecked(){
    List<participantWrapper> wrappers = new List<participantWrapper>();        
    List<Participant__c> dltCase = new List<Participant__c>();
    for(participantWrapper cc: allrecords) {
        if(cc.checked) {
            dltCase.add(cc.par);
        } else {
            wrappers.add(cc);
        }
    }
    delete dltCase;
    allrecords = wrappers;
    }
}

VF page

    <apex:page controller="ecrjcClass" lightningStyleSheets="true">

<!-- Logo and header -->
<br/>
<br/>
<div style="text-align: center">
    <apex:image url="{!URLFOR($Resource.ecrjcLogo)}" height="300" width="300"> 
    </apex:image>            
<br/>
<br/>

<h1>Referral Form</h1>
</div>

<!--Form begins-->
<!--General info-->

<apex:form >
    <apex:pageBlock >
    <apex:pageBlockSection title="General information" columns="2">
        <apex:inputField value="{!Ref.Date__c}"/>
        <apex:inputField value="{!Ref.Referral_Date__c}"/>
        <apex:inputField value="{!Ref.Referring_Agency__c}"/>
        <apex:inputField value="{!Ref.Mailing_Street__c}"/>
        <apex:inputField value="{!Ref.Mailing_City__c}"/>
        <apex:inputField value="{!Ref.Mailing_Country__c}"/>
        <apex:inputField value="{!Ref.Mailing_State_Province__c}"/>
        <apex:inputField value="{!Ref.Mailing_ZIP_Postal__c}"/>
    </apex:pageBlockSection>
    </apex:pageBlock>
    
    <!--Referrer Information-->
    <apex:pageBlock >
    <apex:pageBlockSection title="Referrer Information">
        <apex:inputField value="{!Ref.Referrer_Name__c}"/>
        <apex:inputField value="{!Ref.Referrer_Phone__c}"/>
        <apex:inputField value="{!Ref.Referrer_Email__c}"/>
    </apex:pageBlockSection>
    </apex:pageBlock>
    
    <apex:pageBlock >
    <!--Participant info-->
    <apex:pageBlockSection title="Partipicant Information">
        <apex:inputField value="{!record.Name}"/>
        <apex:inputField value="{!record.Last_Name__c}"/>
        <apex:inputField value="{!record.Age__c}"/>
        <apex:inputField value="{!record.Phone__c}"/>
        <apex:inputField value="{!record.Victim_Offender__c}"/>
    </apex:pageBlockSection>     
    <!--Add participant to record list-->    
        <apex:pageBlockButtons location="bottom">
        <apex:commandButton action="{!Add_Row}" value="Add Participant"/>
    </apex:pageBlockButtons>
    </apex:pageBlock>   
    
            <apex:pageBlock title="Added Participants">
        <apex:pageBlockTable id="Participants" value="{!allrecords}" var="Participant">
            <apex:column>
                <apex:inputCheckbox value="{!Participant.checked}"/>
            </apex:column>
            <apex:column headerValue="First Name" value="{!Participant.par.Name}"/>
            <apex:column headerValue="Last Name" value="{!Participant.par.Last_Name__c}"/>
            <apex:column headerValue="Age" value="{!Participant.par.Age__c}"/>
            <apex:column headerValue="Phone" value="{!Participant.par.Phone__c}"/>
            <apex:column headerValue="Victim/Offender" value="{!Participant.par.Victim_Offender__c}"/>
        </apex:pageBlockTable>
        <apex:pageBlockButtons location="bottom">
            <apex:commandButton action="{!save}" value="Submit"/>
        </apex:pageBlockButtons>
    </apex:pageBlock>
</apex:form>
</apex:page>

Thank you.

Edit: Errors:

  • Invalid field checked for SObject Participant__c
  • Method does not exist or incorrect signature: void add(ecrjcClass.participantWrapper) from the type List<Participant__c>
  • Invalid loop variable type expected Participant__c was ecrjcClass.participantWrapper
  • Illegal assignment from List<ecrjcClass.participantWrapper> to List<Participant__c>

1 Answer

Welcome to Memory Exceeded, where you can ask questions and receive answers from other members of the community.
You can donate any amount for Orphans village using following QR Code.
...