I have an account list when user selects an account its related contacts should come in pageblocktable.
public class assignment1
{
public Account acc{get;set;}
public List<wrap> wrapList{get;set;}
public List<SelectOption> allAccounts{get;set;}
public assignment1()
{
acc = new Account();
wrapList = new List<wrap>();
allAccounts = new List<SelectOption>();
getAddAccounts();
}
public void getAddAccounts()
{
List<Account> accList =[Select id, name From Account];
for(Account acc : accList)
{
allAccounts.add(new SelectOption(acc.id, acc.name));
}
}
public void search()
{
wrapList.clear();
for(Contact con : [Select id, name, firstname, lastname, email, Email_Sent__c From Contact where accountId =: acc.id])
{
wrapList.add(new wrap(con));
}
}
public void sendEmail()
{
List<String> emailList = new List<String>();
for(wrap w : wrapList)
{
if(w.checkBox == true)
{
if(w.con.email != null)
{
emailList.add(w.con.email);
}
}
}
Messaging.singleEmailMessage msg = new Messaging.singleEmailMessage();
msg.toAddresses = emailList;
msg.subject = 'hello';
msg.plainTextBody ='Hi there !!!!';
List<Messaging.sendEmailResult> r = Messaging.sendEmail(new List<Messaging.singleEmailMessage>{msg});
}
public class wrap
{
public contact con{get;set;}
public boolean checkBox{get;set;}
public wrap(Contact con)
{
this.con = con;
checkBox = false;
}
}
}
Visualforce Page
<apex:page controller="assignment1">
<apex:form >
<apex:pageBlock >
<apex:actionRegion >
<apex:selectList value="{!acc}" size="1">
<apex:selectOptions value="{!allAccounts}" />
<apex:actionSupport rerender="pbs" action="{!search}"/>
</apex:selectList>
</apex:actionRegion>
<apex:outputPanel id="pbs">
<apex:pageBlockSection >
<apex:pageBlockTable var="row" value="{!wrapList}">
<apex:column headerValue="Action">
<apex:inputCheckbox value="{!row.checkBox}"/>
</apex:column>
<apex:column value="{!row.con.firstname}"/>
<apex:column value="{!row.con.lastname}"/>
<apex:column value="{!row.con.email}"/>
<apex:column value="{!row.con.Email_Sent__c}"/>
</apex:pageBlockTable>
</apex:pageBlockSection>
</apex:outputPanel>
<apex:commandButton action="{!sendEmail}" value="Send Email"/>
</apex:pageBlock>
</apex:form>
</apex:page>