Hello, right now, I am getting the "Object reference not set to an instance of an object." error for rendering the Gantt Timeline. I'm not sure how to send the data from the Gantt Tree to the timeline or setting the timeline to the correct model. The tree renders just fine. Help with understanding Data Binding with the parameters (IdField, ParentIdField, ItemsField, HasChildrenField) will be great as well.
Razor Page:
<TelerikGantt Data="@SchedulesList"
@bind-View="@SelectedView"
IdField="Id"
ParentIdField=""
Width="100%"
Height="600px"
Sortable="true"
SortMode="@SortMode.Multiple"
FilterMode="@GanttFilterMode.FilterMenu"
FilterMenuType="@FilterMenuType.Menu">
<GanttViews>
<GanttDayView></GanttDayView>
<GanttWeekView></GanttWeekView>
<GanttMonthView></GanttMonthView>
<GanttYearView></GanttYearView>
</GanttViews>
<GanttColumns>
<GanttColumn Field="Sequence"
Title="Sequence">
</GanttColumn>
<GanttColumn Field="ScheduledStart"
Title="Scheduled Start"
>
</GanttColumn>
<GanttColumn Field="ScheduledEnd"
Title="Scheduled End">
</GanttColumn>
<GanttColumn Field="ScheduledDuration"
Title="Scheduled Duration">
</GanttColumn>
<GanttColumn Field="Activity.Name"
Title="Activity Name">
</GanttColumn>
<GanttColumn Field="Resource.Name"
Title="Resource Name">
</GanttColumn>
</GanttColumns>
</TelerikGantt>
@code {
private List<VentureBlazor.Models.ActivityResource> SchedulesList { get; set; }
private List<VentureBlazor.Models.Activity> ActivitiesList { get; set; }
private List<VentureBlazor.Models.Resource> ResourcesList { get; set; }
private ActivityScheduleRepository repo;
public GanttView SelectedView { get; set; } = GanttView.Year;
protected override async Task OnInitializedAsync()
{
repo = new ActivityScheduleRepository(ContextFactory.CreateDbContext());
await LoadSchedules();
base.OnInitialized();
}
public async Task LoadSchedules()
{
ActivitiesList = await repo.GetAllActivitiesAsync();
ResourcesList = await repo.GetAllResourcesAsync();
SchedulesList = await repo.GetAllActivityResourceSchedulesAsync();
}
public void Dispose()
{
repo.Dispose();
}
}
Model:
public class ActivityResource
{
[Key]
public int Id { get; set; }
public int ActivityId { get; set; }
public int ResourceId { get; set; }
public double Sequence { get; set; }
public DateTime ScheduledStart { get; set; }
public DateTime ScheduledEnd { get; set; }
public double ScheduledDuration { get; set; }
public Activity Activity { get; set; }
public Resource Resource { get; set; }
}
public class Resource
{
public int Id { get; set; }
public string Name { get; set; } = "New Resource";
public string Description { get; set; }
public int ResourceTypeId { get; set; }
public virtual ResourceType ResourceType { get; set; }
public ICollection<Activity> Activities { get; set; }
public ICollection<Project> Projects { get; set; }
public List<ActivityResource> ActivityResources { get; set; }
public List<ProjectActivity> ProjectActivities { get; set; }
}