この場合、クラスを使用して、そのクラスのオブジェクトのリストを作成します。
class CTimeSlot
{
public Time tStart {get; set;}
public Appointment__c sAppointment {get; set;}
public CTimeSlot(Time startTime)
{
tStart = startTime;
Appointment__c = null;
}
}
// ** snip **
list<CTimeSlot> liTimeSlots = new list<CTimeSlot>();
// ** snip ** loop through times, and for each add an entry to the list
CTimeSlot newSlot = new CTimeSlot(loopTime);
liTimeSlots.add(newSlot);
mapTimeToSlot.put(loopTime + '', newSlot);
}
// ** snip ** when running through your query results of Appointment__c objects:
for(Appointment__c sAppointment : [select Id, Time__c from Appointment__c where ...])
{
if(mapTimeToSlot.get(sAppointment.Time__c) != null)
{
mapTimeToSlot.get(sAppointment.Time__c).sAppointment = sAppointment;
}
}
次に、このリストにCTimeSlotのインスタンスを入力できます。予定がある場合は、インスタンスでsAppointmentに設定します。これは、スロットのマップを作成し、時間を(文字列として)マッピングすることで簡単にできます。 CTimeSlotに。
このページで、リストを繰り返すことができます。
<table>
<apex:repeat var="slot" value="{!liTimeSlots}">
<tr>
<td><apex:outputText value="{!slot.tStart}"/></td>
<td>
<apex:outputText value="{!IF(ISNULL(slot.sAppointment), 'Free', slot.sAppointment.SomeField)}"/>
</td>
</tr>
</apex:repeat>
うまくいけば、これはあなたにいくつかのアイデアを与え、あなたを正しい道に導くでしょう!