Объедините несколько объектов в списке
Я хочу создать единый список записей различных типов sObject, используя apex для отображения на пользовательской странице 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;
}
}
Как мне заполнить список контактов и дел?
3 ответа
Компонент 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>
Может быть, я что-то упустил, но не могли бы вы просто собрать их в:
List<SObject> objects = new List<SObject>();
Затем вы можете добавить любой общий SObject в этот список.
Класс Джереми - это то, что вы хотите. Кроме того, вы сначала сгенерируете списки объектов, которые вы хотите, на основе SOQL, а затем выполните цикл, чтобы создать новые экземпляры обертки для вашего списка обертки (в данном случае ContactsAndCases), содержащие значения как из контактов, так и из дел.