You need to sign in to do that
Don't have an account?
Rajashri
VF page design need help
Hi,,
I am trying to design the VF page for below controller but my VF page is giving an error...
Error: Invalid field CampaignMembers for SObject CampaignMember
Can anyone please help?
Below is my VF page..
<apex:page StandardController="Campaign" extensions="CampaignMemController">
<apex:form >
<apex:pageBlock title="Campaign Members Details" mode="maindetail">
<apex:pageBlockSection title="Campaign Members" id="cm3">
<apex:pageblocktable value="{!CampaignMembers}" var="cm">
<apex:column >
<apex:pageblocktable value="{!cm.CampaignMembers}" var="cpm">
<apex:column headerValue="Name">
<apex:outputfield value="{!cpm.LeadID}" rendered="{!cpm.LeadID != null}"/>
</apex:column>
</apex:pageblocktable>
</apex:column>
<apex:column >
<apex:pageblocktable value="{!cm.ActivityHistories}" var="tm">
<apex:column headerValue="Subject">
<apex:outputfield value="{!tm.Subject}" rendered="{!tm.Subject != null}"/>
</apex:column>
</apex:pageblocktable>
</apex:column>
</apex:pageblocktable>
</apex:pageBlockSection>
</apex:pageBlock>
</apex:form>
</apex:page>
Controller Code
public with sharing class CampaignMemController {
public Campaign camp {
get;
set;
}
public List<Lead> leads {
get;
set;
}
public List<CampaignMember> campaignMembers {
get;
set;
}
public CampaignMemController(ApexPages.StandardController controller) {
this.camp = (Campaign) controller.getRecord();
this.campaignMembers = [
select
CampaignId,
LeadId,
Status
from CampaignMember
where CampaignId = :this.camp.Id and
Status != ''
];
Set<Id> leadIds = new Set<Id>();
for (CampaignMember member: this.campaignMembers) {
leadIds.add(member.LeadId);
}
leadIds.remove(null);
this.leads = new List<Lead>();
if (!leadIds.isEmpty()) {
this.leads = [
select Email,
FirstName,
LastName,
MobilePhone,
Name,
Phone,
(
select Subject,
from ActivityHistories
where lastModifiedDate != null and
Subject != null
order by LastModifiedDate desc
limit 1
)
from Lead
where Id in :leadIds
];
}
}
}
I am trying to design the VF page for below controller but my VF page is giving an error...
Error: Invalid field CampaignMembers for SObject CampaignMember
Can anyone please help?
Below is my VF page..
<apex:page StandardController="Campaign" extensions="CampaignMemController">
<apex:form >
<apex:pageBlock title="Campaign Members Details" mode="maindetail">
<apex:pageBlockSection title="Campaign Members" id="cm3">
<apex:pageblocktable value="{!CampaignMembers}" var="cm">
<apex:column >
<apex:pageblocktable value="{!cm.CampaignMembers}" var="cpm">
<apex:column headerValue="Name">
<apex:outputfield value="{!cpm.LeadID}" rendered="{!cpm.LeadID != null}"/>
</apex:column>
</apex:pageblocktable>
</apex:column>
<apex:column >
<apex:pageblocktable value="{!cm.ActivityHistories}" var="tm">
<apex:column headerValue="Subject">
<apex:outputfield value="{!tm.Subject}" rendered="{!tm.Subject != null}"/>
</apex:column>
</apex:pageblocktable>
</apex:column>
</apex:pageblocktable>
</apex:pageBlockSection>
</apex:pageBlock>
</apex:form>
</apex:page>
Controller Code
public with sharing class CampaignMemController {
public Campaign camp {
get;
set;
}
public List<Lead> leads {
get;
set;
}
public List<CampaignMember> campaignMembers {
get;
set;
}
public CampaignMemController(ApexPages.StandardController controller) {
this.camp = (Campaign) controller.getRecord();
this.campaignMembers = [
select
CampaignId,
LeadId,
Status
from CampaignMember
where CampaignId = :this.camp.Id and
Status != ''
];
Set<Id> leadIds = new Set<Id>();
for (CampaignMember member: this.campaignMembers) {
leadIds.add(member.LeadId);
}
leadIds.remove(null);
this.leads = new List<Lead>();
if (!leadIds.isEmpty()) {
this.leads = [
select Email,
FirstName,
LastName,
MobilePhone,
Name,
Phone,
(
select Subject,
from ActivityHistories
where lastModifiedDate != null and
Subject != null
order by LastModifiedDate desc
limit 1
)
from Lead
where Id in :leadIds
];
}
}
}
I think the evil is set in the second pageBlockTable, where You want to display a list of campaignmenbers out of a single campaignmember. The "cm" is already a campaignmember. So You are repeating twice over the same ist.
Secondly, I think You should use another name for Your List in the controller, as the StandardController already has a "Standard" List called Campaignmember.
So the 3rd line in this context should be changed.
Jens