2017-02-02 16 views
0

Я создаю расписание с элементом управления DayPilot Lite. Я хочу добавить дополнительную информацию к каждому событию, но не может перенаправлять свойства через соединение.Добавление свойств в календарь DayPilot со вставками в EF DataSource

Мой DataSource:

protected IEnumerable<Schedule> GetUserSched(int userId) 
    { 
     var query = (from i in _context.UserScheduleMaps 
        where i.UserId == userId 
        select i.ScheduleId).ToList(); 

     var sched = (from i in _context.Schedules 
        join r in _context.Rooms 
        on i.RoomId equals r.RoomId 
        where query.Contains(i.ScheduleId) 
        select i).ToList(); 

     return sched; 
    } 

Добавление дополнительных свойств работает, если я предназначаться свойство из первой таблицы, а не из присоединяемой таблицы:

protected void calSched1_BeforeEventRender(object sender, DayPilot.Web.Ui.Events.Calendar.BeforeEventRenderEventArgs e) 
    { 
     if (e.DataItem.Source != null) 
     { 
      // e.DataItem["Room.RoomNameOrNumber"] ? 
      string location = e.DataItem["RoomId"] as string; 
      e.Html = e.Text + ", room: " + location; 
     } 
    } 

Как таргетировать свойства из соединяемых таблиц?

ответ

0

Решение должно было отличать e.DataItem.Source как оригинальный тип. Затем я мог бы получить доступ к желаемым свойствам.

protected void calSched1_BeforeEventRender(object sender, BeforeEventRenderEventArgs e) 
{ 
    if (e.DataItem.Source != null) 
    { 
     Schedule sched = (Schedule)e.DataItem.Source; 
     e.Html = e.Text + ", room: " + sched.Room.RoomNameOrNumber; 
    } 
}