You need to sign in to do that
Don't have an account?
rishabh rathor 18
Display list of Account in picklist and when account gets selected its related contacts should be displayed in table
Here It is my code:-
======Apex Controller========
public with sharing class AccountController1_picklistrendering { public String account { get; set; } public String selectedAccId{get;set;} public String selectedConId{get;set;} public List<SelectOption> getAccountNames() { List<SelectOption> accOptions= new List<SelectOption>(); accOptions.add( new SelectOption('','--Select--')); for( Account acc : [select Id,name from Account ] ) { accOptions.add( new SelectOption(acc.Id,acc.name)); } return accOptions; } public List<SelectContact> getContactNames() { System.debug('Entered ContactNames account id...........'+selectedAccId ); if(selectContact != null) contact con = [select name from contact where accountid=:selectedAccId ]; return con; } }
=============VF Page==================
<apex:page controller="AccountController1_picklistrendering"> <apex:form > <apex:pageBlock title="Account Name"> Account Names <apex:selectList value="{!selectedAccId}" size="1"> <apex:selectOptions value="{!AccountNames}"/> <apex:actionSupport event="onchange" reRender="a"/> </apex:selectList> <br/><br/> Related Contact Names <apex:pageBlockTable value="{!ContactNames}" var="items"> <apex:column value="{!items.name}"/> </apex:pageBlockTable> <apex:selectList value="{!selectedConId}" size="1" id="a"> <apex:selectOptions value="{!ContactNames}" /> </apex:selectList> </apex:pageBlock> </apex:form> </apex:page>
======Apex Controller========
public with sharing class AccountController1_picklistrendering { public String account { get; set; } public String selectedAccId{get;set;} public String selectedConId{get;set;} public List<SelectOption> getAccountNames() { List<SelectOption> accOptions= new List<SelectOption>(); accOptions.add( new SelectOption('','--Select--')); for( Account acc : [select Id,name from Account ] ) { accOptions.add( new SelectOption(acc.Id,acc.name)); } return accOptions; } public List<SelectContact> getContactNames() { System.debug('Entered ContactNames account id...........'+selectedAccId ); if(selectContact != null) contact con = [select name from contact where accountid=:selectedAccId ]; return con; } }
=============VF Page==================
<apex:page controller="AccountController1_picklistrendering"> <apex:form > <apex:pageBlock title="Account Name"> Account Names <apex:selectList value="{!selectedAccId}" size="1"> <apex:selectOptions value="{!AccountNames}"/> <apex:actionSupport event="onchange" reRender="a"/> </apex:selectList> <br/><br/> Related Contact Names <apex:pageBlockTable value="{!ContactNames}" var="items"> <apex:column value="{!items.name}"/> </apex:pageBlockTable> <apex:selectList value="{!selectedConId}" size="1" id="a"> <apex:selectOptions value="{!ContactNames}" /> </apex:selectList> </apex:pageBlock> </apex:form> </apex:page>
Please use below code:
Visualforce Page:
<apex:page controller="AccountContactController">
<apex:form >
<apex:pageBlock title="Account Name">
<apex:selectList value="{!selectedAccId}" size="1">
<apex:selectOptions value="{!AccountNames}" />
<apex:actionSupport event="onchange" action="{!showContacts}" reRender="op" />
</apex:selectList><br/><br/>
<apex:outputPanel id="op">
<b><apex:outputText value="Related Contacts" rendered="{!renderPBtable}"/></b>
<b><apex:outputText value="No Contacts on this Account" rendered="{!noContact}" style="color: red;"/></b>
<apex:pageblockTable title="Contacts" value="{!conlist}" var="sc" id="relatedContactsBlock" rendered="{!renderPBtable}">
<apex:column value="{!sc.name}"/>
<apex:column value="{!sc.phone}"/>
</apex:pageblockTable>
</apex:outputPanel>
</apex:pageBlock>
</apex:form>
</apex:page>
Apex Class:
public with sharing class AccountContactController {
public Id selectedAccId{get;set;}
public List<Contact> conlist {get;set;}
public Boolean renderPBtable {get;set;}
public Boolean noContact {get;set;}
public List<SelectOption> getAccountNames() {
List<SelectOption> accOptions= new List<SelectOption>();
system.debug(selectedAccId);
accOptions.add( new SelectOption('','--Select--'));
for(Account acc : [select Id,name from Account ] ) {
accOptions.add(new SelectOption(acc.Id,acc.name));
}
return accOptions;
}
public PageReference showContacts(){
conlist=[select name,phone from Contact where Accountid=: selectedAccId];
if(conlist.size() > 0)
{
renderPBtable = true;
noContact = false;
}
else
{
renderPBtable = false;
noContact = true;
}
return null;
}
}
Thanks,
Maharajan.C
All Answers
Please use below code:
Visualforce Page:
<apex:page controller="AccountContactController">
<apex:form >
<apex:pageBlock title="Account Name">
<apex:selectList value="{!selectedAccId}" size="1">
<apex:selectOptions value="{!AccountNames}" />
<apex:actionSupport event="onchange" action="{!showContacts}" reRender="op" />
</apex:selectList><br/><br/>
<apex:outputPanel id="op">
<b><apex:outputText value="Related Contacts" rendered="{!renderPBtable}"/></b>
<b><apex:outputText value="No Contacts on this Account" rendered="{!noContact}" style="color: red;"/></b>
<apex:pageblockTable title="Contacts" value="{!conlist}" var="sc" id="relatedContactsBlock" rendered="{!renderPBtable}">
<apex:column value="{!sc.name}"/>
<apex:column value="{!sc.phone}"/>
</apex:pageblockTable>
</apex:outputPanel>
</apex:pageBlock>
</apex:form>
</apex:page>
Apex Class:
public with sharing class AccountContactController {
public Id selectedAccId{get;set;}
public List<Contact> conlist {get;set;}
public Boolean renderPBtable {get;set;}
public Boolean noContact {get;set;}
public List<SelectOption> getAccountNames() {
List<SelectOption> accOptions= new List<SelectOption>();
system.debug(selectedAccId);
accOptions.add( new SelectOption('','--Select--'));
for(Account acc : [select Id,name from Account ] ) {
accOptions.add(new SelectOption(acc.Id,acc.name));
}
return accOptions;
}
public PageReference showContacts(){
conlist=[select name,phone from Contact where Accountid=: selectedAccId];
if(conlist.size() > 0)
{
renderPBtable = true;
noContact = false;
}
else
{
renderPBtable = false;
noContact = true;
}
return null;
}
}
Thanks,
Maharajan.C
I have gone through your problem please refer below code:
Visualforce page:-
Apex class:
I hope you find the above solution helpful. If it does, please mark as Best Answer to help others too.
Thanks and Regards,
Deepali Kulshrestha
www.kdeepali.com