我希望使用apex创建一个单独的sObject类型记录列表,以显示到自定义的visualforce页面。我想知道是否有办法在一个列表中组合多个对象(案例,机会,帐户等)。如果没有,如何使用visualforce代码将第二个对象附加到列表中的第一个对象?有最好的做法吗?
由于
所以我可以用更多的帮助来完成这个。我写了这个:
public class MyController {
public List<ContactAndCase> ContactsAndCases { get; set; }
public Opportunity TheOpp{
get {
TheOpp = [select Id FROM Opportunity];
return TheOpp;
}
set;
}
public Case TheCase{
get {
TheCase = [select Id FROM Case];
return TheCase;
}
set;
}
}
如何填写ContactsAndCases列表?
答案 0 :(得分:4)
VisualForce组件迭代单个列表。列表的类型,例如List<Lead>
,指示VF组件可以呈现的数据。
为了呈现不同类型的列表,您可以为每种类型设置单独的VF组件,例如:
<apex:pageBlockTable value="{!contacts}" var="contact">
...
</apex:pageBlockTable>
<apex:pageBlockTable value="{!cases}" var="case">
...
</apex:pageBlockTable>
或者,您可以创建一个包含不同类型实例的新类型。这是一个控制器示例:
public class MyController {
public List<ContactAndCase> ContactsAndCases { get; set; }
public MyController() {
ContactsAndCases = new List<ContactAndCase>();
// populate ContactsAndCases list
}
public class ContactAndCase {
public Contact TheContact { get; set; }
public Case TheCase { get; set; }
}
}
然后,您可以迭代List<ContactAndCase>
:
<apex:pageBlockTable value="{!ContactsAndCases}" var="item">
<apex:column value="{!item.TheContact.LastName}" />
<apex:column value="{!item.TheCase.CaseNumber}" />
</apex:pageBlockTable>
答案 1 :(得分:1)
Jeremy的包装课是你想要的。此外,您将首先生成基于SOQL的对象列表,然后循环创建包装器列表的新包装器实例(在本例中为ContactsAndCases),其中包含来自联系人和案例的值。
答案 2 :(得分:1)
也许我错过了一些东西,但你不能简单地收集它们:
List<SObject> objects = new List<SObject>();
然后,您可以将任何通用SObject添加到该列表中。