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
SFDCAdmin73SFDCAdmin73 

Activity History Related List in VF page?

I am a creating a custom VF page that renders as a PDF for the Opportunity object. See image below. I need to diplay the actiivty history related list on the opportunity in the VF page as a html table. Not sure how to do this. See image below. I appreciate the help!

User-added image
 
<apex:page standardController="Opportunity"  renderAS="pdf"> 
<html> 
   <head>
      <style>
        @page {size: A4 landscape; /* ISO/JIS A4 (210mm x 297mm) */  
                     margin: 5mm; 
                  } 
            @page:first {  
                     size: A4 landscape; /* ISO/JIS A4 (210mm x 297mm) */ 
                     margin: 5mm; 
                     margin-top: 3mm; 
    </style>                 
    </head>  
  </html>   
  
<apex:pageBlock title="{!Opportunity.name} Opportunity Dashboard {!Opportunity.LastModifiedDate}">
<TABLE BORDER="2" WIDTH="100%" style="border: solid gray;">
   <TR>
      <TD style="background-color:#dadae2; width:12%"><center><b>Coverage</b></center></TD>
      <TD><b>Sales:</b>{!Opportunity.Sales__c}</TD>
      <TD><b>SE:</b>{!Opportunity.SE__c}</TD>
      <TD><b>BU:</b>{!Opportunity.BU__c}</TD>
   </TR>
</TABLE>
<TABLE border="0" cellspacing="0" cellpadding="0" width= "100%">
<TR>
<TD WIDTH="33%"> 
<TABLE BORDER="2" WIDTH="100%" style="border: solid gray;">
   <TR>
      <TD style="background-color:#dadae2"><center><b>Opportunity Sizing</b></center></TD>
   </TR>
</TABLE>
<TABLE BORDER="2" WIDTH="100%" style="border: solid gray;">
   <TR>
      <TD><b>Deal Amount:</b>{!Opportunity.Actual_Amount__c}</TD>
   </TR>
</TABLE>
<TABLE BORDER="2" WIDTH="100%" style="border: solid gray;">
   <TR> 
      <TD><b>Q1:</b>{!Opportunity.Total_Amount_Q1__c}</TD>
      <TD><b>Q2:</b>{!Opportunity.Total_Amount_Q2__c}</TD>
      <TD><b>Q3:</b>{!Opportunity.Total_Amount_Q3__c}</TD>
      <TD><b>Q4:</b>{!Opportunity.Total_Amount_Q2__c}</TD>
   </TR>
</TABLE>
<TABLE BORDER="2" WIDTH="100%" style="border:solid gray;">
   <TR>
      <TD style="background-color:#dadae2"><center><b>Decision Milestones</b></center></TD>
   </TR>
</TABLE>   
<TABLE BORDER="2" WIDTH="100%" style="border:solid gray;">
   <TR>    
      <TD style="background-color:#b5eaba;"><center><b>Event</b></center></TD>
      <TD style="background-color:#b5eaba;"><center><b>Dates</b></center></TD>
   </TR>
   <TR>   
      <TD width="65%"><b>Evaluation Start and End Date:</b></TD>
      <TD><apex:outputText value="{0, date, MMMM d','yyyy}"><apex:param value="{!Opportunity.Evaluation_Start_Date__c}"/></apex:outputText>
-<apex:outputText value="{0, date, MMMM d','yyyy}"><apex:param value="{!Opportunity.Evaluation_End_Date__c}"/></apex:outputText></TD>
   <TR>  
     <TD><b>Evaluation DeBrief</b></TD>
     <TD>{!Opportunity.Evaluation_DeBrief__c}</TD>
   </TR>
   <TR>  
     <TD><b>Internal Selection Mtg</b></TD>
     <TD>{!Opportunity.Internal_Selection_Mtg__c}</TD>
   </TR>
   <TR>  
     <TD><b>Notification of Intent</b></TD>
     <TD>{!Opportunity.Notification_of_Intent__c}</TD>
   </TR>
   <TR>  
     <TD><b>Buying Vehicle Identified</b></TD>
     <TD>{!Opportunity.Buying_Vehicle_Identified__c}</TD>
   </TR>
    <TR>  
     <TD><b>Negotiation Start and End Date</b></TD>
     <TD><apex:outputText value="{0, date, MMMM d','yyyy}"><apex:param value="{!Opportunity.Negotiation_Start_Date__c}"/></apex:outputText>
-<apex:outputText value="{0, date, MMMM d','yyyy}"><apex:param value="{!Opportunity.Negotiation_End_Date__c}"/></apex:outputText></TD>
   </TR>
   <TR>  
     <TD><b>Contract Execution</b></TD>
     <TD>{!Opportunity.Contract_Execution__c}</TD>
   </TR>
   <TR>  
     <TD><b>First Forecast Meeting</b></TD>
     <TD>{!Opportunity.First_Forecast_Meeting__c}</TD>
   </TR>
   <TR>  
     <TD><b>Pre-Production Order</b></TD>
     <TD>{!Opportunity.Pre_Production_Order__c}</TD>
   </TR>
   <TR>  
     <TD><b>Pre-Production Delivery</b></TD>
     <TD>{!Opportunity.Pre_Production_Delivery__c}</TD>
  </TR> 
 </TR>
 <TR>  
     <TD><b>1St Production Order</b></TD>
     <TD>{!Opportunity.X1st_Production_Order__c}</TD>
  </TR> 
  <TR>  
     <TD><b>1St Production Delivery</b></TD>
     <TD>{!Opportunity.X1st_Production_Delivery__c}</TD>
  </TR>   
</TABLE>
<TD width="33%">
<TABLE BORDER="2" WIDTH="100%"  style="border: solid gray;">
   <TR>
      <TD style="background-color:#dadae2"><center><b>Decision Criteria Positioning (1/L =>5/H)</b></center></TD>
   </TR>
</TABLE>
<TABLE BORDER="2" WIDTH="100%" style="border:solid gray;">
   <TR>    
      <TD width="60%" style="background-color:#b5eaba;"><center><b>Criteria/Goal</b></center></TD>
      <TD width="20%" style="background-color:#b5eaba;"><center><b>QLogic</b></center></TD>
      <TD style="background-color:#b5eaba;"><center><b>{!Opportunity.Competitor_1__c}</b></center></TD>
      <TD style="background-color:#b5eaba;"><center><b>{!Opportunity.Competitor_2__c}</b></center></TD>
      <TD style="background-color:#b5eaba;"><center><b>{!Opportunity.Competitor_3__c}</b></center></TD>
      <TD style="background-color:#b5eaba;"><center><b>{!Opportunity.Competitor_4__c}</b></center></TD>
      <TD style="background-color:#b5eaba;"><center><b>{!Opportunity.Competitor_5__c}</b></center></TD>
      <TD style="background-color:#b5eaba;"><center><b>{!Opportunity.Competitor_6__c}</b></center></TD>
   </TR>
</TABLE>   
<TABLE BORDER="2" WIDTH="100%" style="border:solid gray;">   
   <TR>  
     <TD width="60%">{!Opportunity.Criteria_Goal_1__c}</TD>
     <TD width="20%">{!Opportunity.QLogic_Positioning_1__c}</TD>
     <TD>{!Opportunity.Competitor_Positioning_1__c}</TD>
     <TD>{!Opportunity.Competitor_Positioning_2__c}</TD>
     <TD>{!Opportunity.Competitor_Positioning_3__c}</TD>
     <TD>{!Opportunity.Competitor_Positioning_4__c}</TD>
     <TD>{!Opportunity.Competitor_Positioning_5__c}</TD>
     <TD>{!Opportunity.Competitor_Positioning_6__c}</TD>
   </TR>
</TABLE>   
<TABLE BORDER="2" WIDTH="100%" style="border:solid gray;">   
   <TR>  
     <TD width="60%">{!Opportunity.Criteria_Goal_2__c}</TD>
     <TD width="20%">{!Opportunity.QLogic_Positioning_2__c}</TD>
     <TD>{!Opportunity.Competitor_Positioning_1__c}</TD>
     <TD>{!Opportunity.Competitor_Positioning_2__c}</TD>
     <TD>{!Opportunity.Competitor_Positioning_3__c}</TD>
     <TD>{!Opportunity.Competitor_Positioning_4__c}</TD>
     <TD>{!Opportunity.Competitor_Positioning_5__c}</TD>
     <TD>{!Opportunity.Competitor_Positioning_6__c}</TD>
   </TR>
</TABLE>   
<TABLE BORDER="2" WIDTH="100%" style="border:solid gray;">   
   <TR>  
     <TD width="60%">{!Opportunity.Criteria_Goal_3__c}</TD>
     <TD width="20%">{!Opportunity.QLogic_Postioning_3__c}</TD>
     <TD>{!Opportunity.Competitor_Positioning_1__c}</TD>
     <TD>{!Opportunity.Competitor_Positioning_2__c}</TD>
     <TD>{!Opportunity.Competitor_Positioning_3__c}</TD>
     <TD>{!Opportunity.Competitor_Positioning_4__c}</TD>
     <TD>{!Opportunity.Competitor_Positioning_5__c}</TD>
     <TD>{!Opportunity.Competitor_Positioning_6__c}</TD>
   </TR>
</TABLE>   
<TABLE BORDER="2" WIDTH="100%" style="border:solid gray;">   
   <TR>  
     <TD width="60%">{!Opportunity.Criteria_Goal_4__c}</TD>
     <TD width="20%">{!Opportunity.QLogic_Positioning_4__c}</TD>
     <TD>{!Opportunity.Competitor_Positioning_1__c}</TD>
     <TD>{!Opportunity.Competitor_Positioning_2__c}</TD>
     <TD>{!Opportunity.Competitor_Positioning_3__c}</TD>
     <TD>{!Opportunity.Competitor_Positioning_4__c}</TD>
     <TD>{!Opportunity.Competitor_Positioning_5__c}</TD>
     <TD>{!Opportunity.Competitor_Positioning_6__c}</TD>
   </TR>
</TABLE>   
<TABLE BORDER="2" WIDTH="100%" style="border:solid gray;">   
   <TR>  
     <TD width="60%">{!Opportunity.Criteria_Goal_5__c}</TD>
     <TD width="20%">{!Opportunity.QLogic_Positioning_5__c}</TD>
     <TD>{!Opportunity.Competitor_Positioning_1__c}</TD>
     <TD>{!Opportunity.Competitor_Positioning_2__c}</TD>
     <TD>{!Opportunity.Competitor_Positioning_3__c}</TD>
     <TD>{!Opportunity.Competitor_Positioning_4__c}</TD>
     <TD>{!Opportunity.Competitor_Positioning_5__c}</TD>
     <TD>{!Opportunity.Competitor_Positioning_6__c}</TD>
   </TR>
</TABLE>   
<TABLE BORDER="2" WIDTH="100%" style="border:solid gray;">   
   <TR>  
     <TD width="60%">{!Opportunity.Criteria_Goal_6__c}</TD>
     <TD width="20%">{!Opportunity.QLogic_Postioning_6__c}</TD>
     <TD>{!Opportunity.Competitor_Positioning_1__c}</TD>
     <TD>{!Opportunity.Competitor_Positioning_2__c}</TD>
     <TD>{!Opportunity.Competitor_Positioning_3__c}</TD>
     <TD>{!Opportunity.Competitor_Positioning_4__c}</TD>
     <TD>{!Opportunity.Competitor_Positioning_5__c}</TD>
     <TD>{!Opportunity.Competitor_Positioning_6__c}</TD>
   </TR>
</TABLE>   
<TABLE BORDER="2" WIDTH="100%"  style="border: solid gray;">
   <TR>
      <TD style="background-color:#dadae2"><center><b>Key Player Match-Up</b></center></TD>
   </TR>
</TABLE>
<TABLE BORDER="2" WIDTH="100%" style="border:solid gray;">
   <TR>    
      <TD width="60%" style="background-color:#b5eaba;"><center><b>Customer Contact</b></center></TD>
      <TD style="background-color:#b5eaba;"><center><b>Title</b></center></TD>
   </TR>
</TABLE> 
<TABLE BORDER="2" WIDTH="100%" style="border:solid gray;">
 <TR>  
     <TD>Name:{!Opportunity.Customer_Contact_1__c}</TD>
     <TD>{!Opportunity.CustomerContact_Title_1__c}</TD>
   </TR>
   <TR>  
     <TD>Name:{!Opportunity.Customer_Contact_2__c}</TD>
     <TD>{!Opportunity.Customer_Contact_2__c}</TD>
   </TR>
   <TR>  
     <TD>Name:{!Opportunity.Customer_Contact_3__c}</TD>
     <TD>{!Opportunity.CustomerContact_Title_3__c}</TD>
   </TR>
</TABLE>
<TD width="33%">
</TD>
</TD>
</TD>
</TR>
</TABLE>
</apex:pageBlock>
</apex:page>

 
pconpcon
You can just create an apex:dataTable and iterate over ActivityHistories related list
 
<apex:dataTable value="{!Opportunity.ActivityHistories}" var="history">
    <apex:column value="{!history.Subject}" />
</apex>

 
RatanRatan
 
<apex:page standardController="Opportunity" standardstylesheets="true" sidebar="false" showheader="true">
<apex:relatedList list="ActivityHistories"/>
​ </apex:page>

 
SFDCAdmin73SFDCAdmin73
I used the following code you provided and nothing is appearing on the page. See image below. 

User-added image
 
</TABLE>
<TD width="33%">
<apex:dataTable value="{!Opportunity.ActivityHistories}" var="history">
    <apex:column value="{!history.Subject}" />
</apex:datatable>
</TD>
</TD>
</TD>
</TR>
</TABLE>
</apex:pageBlock>
</apex:page>

 
pconpcon
Based on your screenshot, it doesn't look like you provided an Id to your visualforce page for a valid Opportunity.  If you provide an Opportunity Id for one that has Activity History records do you see information?
SFDCAdmin73SFDCAdmin73
I am not sure how to do that. Do I write a url?  https://cs7.salesforce.com/apex/myPage?id=006M000000DCe6M
Where do I put in the code?
 
pconpcon
What do you mean "where do i put the code"?
SFDCAdmin73SFDCAdmin73
Where do I reference the valid Opportuniity ID in the visualforce page? Or do I place the ID in the URL address? 
pconpcon
It should be in the URL.  If you are hitting the URL you provided above, then it should load the Opportunity with the given id.  I would run a query in the Developer Console to verify that the Opporunity that you are providing an Id for actually has ActivityHistory records.
SFDCAdmin73SFDCAdmin73
Thanks. I did that. There is a call log that was entered on the opportunity. Nothing appeard on the VF page except for word 'Call'. See image below. 

User-added image
pconpcon
Yep, that's working exactly as it's written.  That opportunity only has a single history object and that history object has a Subject of Call.  If you were to query the ActivityHistory for that Opportunity you should see only one record and the Subject is "Call" you'll need to build the rest of the table out to your specifications.  If you do not want to use the apex:dataTable tag you can instead use the apex:repeat [1] tag and put whatever bare HTML you want inside the tag.  For example:
 
<table>
    <tr>
        <th>Subject</th>
    </tr>
    <apex:repeat value="{!Opportunity.ActivityHistories}" var="history">
        <tr>
            <td>{!history.Subject}</td>
        </tr>
    </apex:repeat>
</table>

[1] https://developer.salesforce.com/docs/atlas.en-us.pages.meta/pages/pages_compref_repeat.htm