Могу ли я иметь список с несколькими типами данных в Salesforce - PullRequest
1 голос
/ 21 сентября 2011

У меня есть строка List time1 со значениями (00:00, 00: 30, 01:00, 01:30 и т.д. до 23:30)

У меня также есть список appList пользовательского назначения объекта__c.

Этот список содержит только записи назначенных встреч

т.е. если встреча назначена на 8:00 - 8:30 и 10:00 - 11:00, то в ней будут храниться только эти 2 записи

Мне нужно создать сетку или таблицу для отображения встреч на день с 00:00 до 23:30.

Мне нужно прочитать каждую строку в time1 и проверить, есть ли соответствующее соответствие этому времени в appList, если оно найдено, тогда мне нужно показать детали из appList, иначе оно должно отображаться как свободное по времени. Мне также нужно было бы сохранить его в списке, чтобы я мог использовать его на странице VF. Как мне определить этот список? Могу ли я иметь список, хранить время в одном столбце и список объектов назначения в другом столбце

Есть ли лучший способ приблизиться к этому?

1 Ответ

5 голосов
/ 21 сентября 2011

В этом случае я бы использовал класс и имел список объектов для этого класса:

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>

Надеюсь, это даст вам некоторые идеи и направит вас на правильный путь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...