您看到的錯誤是由於您應將其編寫爲campaignMembers[i].Campaign.Name
而引起的。或者如果你堅持getter語法,campaignMembers[i].getSobject('Campaign').get('Name')
。
您需要包裝對象(或任何CampaignMemberResult
是)的任何特殊原因? 我有些奇怪的感覺,你正在編寫太多的代碼來實現簡單的事情;)campaignMembers[i].Campaign.Name
的語法也意味着你不必使用強制轉換爲String。
加 - 如果你需要知道 「其中廣告活動時,這種聯繫發生」 你中有2種方式:
平
select contact.id,contact.firstname, contact.lastname,
campaignid, campaign.name,
status
from CampaignMember
where contactId = '003U000000U0eNq'
子查詢
從你去到campaignmembers的相關列表中的聯繫人,然後由系列,以獲得他們的名字
SELECT Id, FirstName, LastName,
(SELECT CampaignId, Campaign.Name FROM CampaignMembers)
FROM Contact WHERE Id = '003U000000U0eNq'
示例演示如何使用「扁平化」導致直visualforce(無CampaignMemberResult
):
頂點:
public List<CampaignMember> flatMembers {get;set;} // insert dick joke here
flatMembers = [select contact.id,contact.firstname, contact.lastname,
campaignid, campaign.name,
status
from CampaignMember
where contactId = '003U000000U0eNq'];
VF:
<apex:pageBlockTable value="{!flatMembers}" var="cm">
<apex:column value="{!cm.Contact.LastName}" />
<apex:column value="{!cm.Status}" />
<apex:column value="{!cm.Campaign.Name}" />
編輯
我的最終目標是,如果接觸是成員或不被顯示在顯示一個複選框並排 表示所有活動的列表中的聯繫人 記錄一個Visualforce頁面。
你是否意識到它可以快速發展成一個很長的桌子?也許對廣告系列進行一些過濾(如果您想閱讀有關高級的內容 - 請查看「StandardSetController」的文檔)。此外,我很確定有一些方法可以通過Campaign報告添加聯繫人/潛在客戶活動 - 也許開箱即用會節省您的時間,並且更易於維護...
但是代碼的解決方案是非常簡單的,先從一個輔助包裝類:
public class CampaignWrapper{
public Boolean selected {get;set;}
public Campaign c {get; private set;}
public CampaignWrapper(Campaign c){
this.c = c;
selected = !c.CampaignMembers.isEmpty();
}
}
然後查詢並建立包裝清單:
List<CampaignWrapper> wrappers = new List<CampaignWrapper>();
for(Campaign c : [SELECT Id, Name, (SELECT Id FROM CampaignMember WHERE ContactId = '...')
FROM Campaign
LIMIT 1000]){
wrappers.add(new CampaignMember(c));
}
您應該所有設置;)如果只是用於顯示 - 你可能甚至不需要包裝類(在Visualforce表達式中的一些技巧可能或使用Map<Campaign, Boolean>
甚至...
1000 r ecords是傳遞給Visualforce的集合的限制(如果您的頁面是隻讀的,則爲10K)。過去 - 分頁,最有可能與上述StandardSetController一起使用。
謝謝eyescream,我想你是對的,因爲我正在爲簡單的東西編寫太多的代碼。我的最終目標是在聯繫人記錄上顯示的Visualforce頁面,其中顯示了所有具有複選框的所有廣告系列的列表,旁邊顯示聯繫人是否爲會員。使用上面的例子進行一些調整,我應該可以做到這一點嗎? – Ronnie
謝謝eyescream,像往常一樣,你的答案是一個偉大的見解! – Ronnie
乾杯&祝你好運:) :) – eyescream