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
Deepak Pandey 13Deepak Pandey 13 

Wrapper class withsome condition

my requirement is-
1-Account is drop-down 
2-Contact is checkbox
3-Sendind email to Contact
When select accountname all thier related contact(name,phone,email) come to checkbox. Select the checkbox of contact and a commond botton click send a mail of their contact email. 
wrapper class
 
Best Answer chosen by Deepak Pandey 13
Deepak Pandey 13Deepak Pandey 13
public class wrapperClassController {
    public string accid{get;set;}
    public String selectedAccId{get;set;}
    public string selectedconid{get;set;}
    public boolean showhide{get;set;}
    public boolean hide{get;set;}

    public wrapperClassController()
    {
        accid= ApexPages.currentPage().getParameters().get('id');
        showhide=false;
        hide=true;
    }
    public void hiden()
    {
        hide=false;
    }
    public void show()
    {
        showhide=true;
        hide=true;
    }

     public List<SelectOption> getAccountNames()
    {
        List<SelectOption> accOptions= new List<SelectOption>();
        accOptions.add( new SelectOption('','--Select Account--'));
        for( Account acc : [select Id,name from Account ] ) 
        {
            accOptions.add( new SelectOption(acc.Id,acc.name)); 
        }
        show();
        return accOptions;
    }

    public List<cContact> contactList {get; set;}
    public List<cContact> getContacts() {
        if( selectedAccId != null && selectedAccId.length() > 0 ) 
        { 
            contactList = new List<cContact>();
              
            for(Contact c : [select Id, Name, Email, Phone from Contact where AccountId =:selectedAccId ])
            {
                contactList.add(new cContact(c));
            }
        }


        return contactList;
    }
    public PageReference processSelected() {
        List<Contact> selectedContacts = new List<Contact>();
        for(cContact cCon : contactList) {
            if(cCon.selected == true) {
                selectedContacts.add(cCon.con);
            }
        }
        System.debug('These are the selected Contacts…');
        for(Contact con : selectedContacts) {
            string conEmail = con.Email;
            Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
            String[] toAddresses = new String[] {conEmail};
            mail.setToAddresses(toAddresses);
            mail.setReplyTo('deepak@gmail.com');
            mail.setSenderDisplayName('Salesforce Support');
            mail.setSubject('New Case Created : ' + case.Id);
            mail.setBccSender(false);
            mail.setUseSignature(false);
            mail.setPlainTextBody('Thank for Contacting');
            mail.setHtmlBody('Thank for Contacting');
            Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail });
        }
        return null;
    }

    public class cContact {
        public Contact con {get; set;}
        public Boolean selected {get; set;}
        public cContact(Contact c)
        {
            con = c;
            selected = false;
        }
    }
}



------------------------------------
<apex:page controller="wrapperClassController" showHeader="false”" >
<apex:form >
<apex:pageBlock title="Account Name">
                        <apex:selectList value="{!selectedAccId}" size="1"> 
                 <apex:selectOptions value="{!AccountNames}" />
                 <apex:actionSupport action="{!contactlist}" event="onchange" reRender="table"/>
                     </apex:selectList>
          </apex:pageBlock>
<apex:pageBlock >
<apex:pageBlockButtons location="bottom">
<apex:commandButton value="Send Email" action="{!processSelected}" rerender="table" />
</apex:pageBlockButtons>

<apex:pageBlockTable value="{!contacts}" var="c" id="table">
<apex:column >

<apex:inputCheckbox value="{!c.selected}"/>
</apex:column>

<apex:column value="{!c.con.Name}" />
<apex:column value="{!c.con.Email}" />
<apex:column value="{!c.con.Phone}" />
</apex:pageBlockTable>
</apex:pageBlock>
</apex:form>
</apex:page>

All Answers

AshlekhAshlekh
Hi,
 
Class myMainController
{
   public string selectedAccount{set;get;}
   public List<ContactWrapper> contractWrapper{set;get;}

   public List<SelectOption> getAccount()
   {
       List<SelectOption> options = new List<SelectOption>();
       for(Account a : [select id,name from Account limit 10]){
         options.add(new SelectOption(a.id,a.name);
       }
       return options
    }

    public void FindContacts(){
        contractWrapper = new List<ContactWrapper>();
        if(selectedAccount != null){
            for(Contact c : [select id,name, email from contact where accountid=:selectedAccount]){
               contractWrapper.add(new ContactWrapper(c)); 
            }
         }
    }

   Class ContactWrapper
  {
    public Boolean isSelected{set;get;}
    public Contact Con {set;get;}
    public ContactWrapper(contact c)
    {
      isSelected = false; Con = c;
    } 

   public void sendEmail(){ 
      //Write your code 
    }
}
 
<apex:page controller="myMainController">
<apex:outPutPanel id="testid">    
       <apex:form>
        <apex:selectList id="choseAccount" value="{!selectedAccount}" size="1">
            <apex:selectOptions value="{!Account}"/>
            <apex:actionSupport event="onchange" action="{!incrementCounter}" rerender="testid"/>

        </apex:selectList>

     <apex:outPutPanel id="contactlistid" rendered="{!if(And(contractWrapper!=null,contractWrapper.size>0))}">
        <apex:pageBlockTable value="{!contractWrapper}" var="c">
          <apex:column value="{!c.isSelected}" headervalue="selected"/>
           <apex:column value="{!c.name}" headervalue="Name"/>
        </apex:pageBlockTable>
   </apex:outPutPanel>

    </apex:form>

</apex:outPutPanel>

</apex:page>

hope this will help you.

-Thanks
Ashlekh Gera
Deepak Pandey 13Deepak Pandey 13
metod not define incrementCounter? Incorrect number of parameters for function 'if()'. Expected 3, received 1...
Deepak Pandey 13Deepak Pandey 13
public class wrapperClassController {
    public string accid{get;set;}
    public String selectedAccId{get;set;}
    public string selectedconid{get;set;}
    public boolean showhide{get;set;}
    public boolean hide{get;set;}

    public wrapperClassController()
    {
        accid= ApexPages.currentPage().getParameters().get('id');
        showhide=false;
        hide=true;
    }
    public void hiden()
    {
        hide=false;
    }
    public void show()
    {
        showhide=true;
        hide=true;
    }

     public List<SelectOption> getAccountNames()
    {
        List<SelectOption> accOptions= new List<SelectOption>();
        accOptions.add( new SelectOption('','--Select Account--'));
        for( Account acc : [select Id,name from Account ] ) 
        {
            accOptions.add( new SelectOption(acc.Id,acc.name)); 
        }
        show();
        return accOptions;
    }

    public List<cContact> contactList {get; set;}
    public List<cContact> getContacts() {
        if( selectedAccId != null && selectedAccId.length() > 0 ) 
        { 
            contactList = new List<cContact>();
              
            for(Contact c : [select Id, Name, Email, Phone from Contact where AccountId =:selectedAccId ])
            {
                contactList.add(new cContact(c));
            }
        }


        return contactList;
    }
    public PageReference processSelected() {
        List<Contact> selectedContacts = new List<Contact>();
        for(cContact cCon : contactList) {
            if(cCon.selected == true) {
                selectedContacts.add(cCon.con);
            }
        }
        System.debug('These are the selected Contacts…');
        for(Contact con : selectedContacts) {
            string conEmail = con.Email;
            Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
            String[] toAddresses = new String[] {conEmail};
            mail.setToAddresses(toAddresses);
            mail.setReplyTo('deepak@gmail.com');
            mail.setSenderDisplayName('Salesforce Support');
            mail.setSubject('New Case Created : ' + case.Id);
            mail.setBccSender(false);
            mail.setUseSignature(false);
            mail.setPlainTextBody('Thank for Contacting');
            mail.setHtmlBody('Thank for Contacting');
            Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail });
        }
        return null;
    }

    public class cContact {
        public Contact con {get; set;}
        public Boolean selected {get; set;}
        public cContact(Contact c)
        {
            con = c;
            selected = false;
        }
    }
}



------------------------------------
<apex:page controller="wrapperClassController" showHeader="false”" >
<apex:form >
<apex:pageBlock title="Account Name">
                        <apex:selectList value="{!selectedAccId}" size="1"> 
                 <apex:selectOptions value="{!AccountNames}" />
                 <apex:actionSupport action="{!contactlist}" event="onchange" reRender="table"/>
                     </apex:selectList>
          </apex:pageBlock>
<apex:pageBlock >
<apex:pageBlockButtons location="bottom">
<apex:commandButton value="Send Email" action="{!processSelected}" rerender="table" />
</apex:pageBlockButtons>

<apex:pageBlockTable value="{!contacts}" var="c" id="table">
<apex:column >

<apex:inputCheckbox value="{!c.selected}"/>
</apex:column>

<apex:column value="{!c.con.Name}" />
<apex:column value="{!c.con.Email}" />
<apex:column value="{!c.con.Phone}" />
</apex:pageBlockTable>
</apex:pageBlock>
</apex:form>
</apex:page>
This was selected as the best answer