How to Create Visualforce Related List with Edit and Delete Action's?
I have requirement of create a Visualforce Related List to display opportunity Details in Contact object with Edit and Delete Actions.
Page:-
<apex:page standardController="Contact" extensions="sampleDetailPagecon">
<style>
.fewerMore { display: none;}
</style>
<apex:form >
<apex:pageMessages />
<apex:detail relatedList="true"></apex:detail>
<apex:pageblock id="CustomList" title="Related Opportunities">
<apex:pageblocktable value="{!oppz}" var="o" rendered="{!NOT(ISNULL(oppz))}">
<apex:column >
<apex:facet name="header">Action</apex:facet>
<apex:commandLink action="{!editOpp}" value="Edit">
<apex:param name="oppid" value="{!o.id}"/>
</apex:commandLink> | <apex:commandLink action="{!deleteOpp}" value="Delete">
<apex:param name="oppid" value="{!o.id}"/>
</apex:commandLink>
</apex:column>
<!--
<apex:column >
<apex:commandLink action="{!deleteOpp}" value="Delete">
<apex:param name="oppid" value="{!o.id}"/>
</apex:commandLink>
</apex:column>
-->
<apex:column value="{!o.Name}"/>
<apex:column value="{!o.Account.Name}"/>
<apex:column value="{!o.Type}"/>
<apex:column value="{!o.CloseDate}"/>
</apex:pageblocktable>
</apex:pageblock>
</apex:form>
<apex:relatedList list="Opportunities" />
</apex:page>
Controller Class :-
public class sampleDetailPagecon {
private List<Opportunity> oppz;
private Contact cntact;
public sampleDetailPageCon(ApexPages.StandardController controller) {
this.cntact=(Contact)controller.getRecord();
}
public List<Opportunity> getOppz()
{
Contact con = [Select id, Account.id FROM Contact where id =:cntact.id];
if(con.Account==null)
return null;
oppz = [Select id, Name, Account.Name, CloseDate, Amount, Type from Opportunity where Account.id =: con.Account.Id];
return oppz;
}
public Pagereference editOpp()
{
String oppid= ApexPages.currentPage().getParameters().get('oppid');
return new PageReference('/006/e?id='+oppid+'&retURL=/006/');
}
public Pagereference deleteOpp()
{
String oppid= ApexPages.currentPage().getParameters().get('oppid');
Opportunity opp = [Select id from Opportunity where id =:oppid limit 1];
if(opp !=null && opp.id !=null){
delete opp;
}
return null;
}
}
once this is done you need to add the Visualforce section in Contact object with Edit page layout and add this visualforce section in contact related list.
No comments:
Post a Comment