AUTHOR: Peter Milchev
DATE POSTED: November 27, 2018
Create a Simple Custom Provider for RadGantt that uses a list of appointments saved in the Session.
This article shows a simplified implementation of the Custom Provider that does not use EntityFramework.
MyCustomProvider.cs
using
System;
System.Collections.Generic;
System.Linq;
System.Web;
Telerik.Web.UI;
Telerik.Web.UI.Gantt;
public
class
MyCustomProvider : GanttProviderBase
{
private
const
string
TasksKey =
"CustomTasksCollectionKey"
;
DependenciesKey =
"DependenciesCollectionKey"
static
int
LastTaskID = 1;
LastDependencyID = 0;
List<IDependency> AllDependencies
get
List<IDependency> sessionDependencies =
HttpContext.Current.Session[DependenciesKey]
as
List<IDependency>;
if
(sessionDependencies ==
null
)
sessionDependencies =
new
List<IDependency>();
HttpContext.Current.Session[DependenciesKey] = sessionDependencies;
}
return
sessionDependencies;
List<ITask> AllTasks
List<ITask> sessionTasks =
HttpContext.Current.Session[TasksKey]
List<ITask>;
(sessionTasks ==
sessionTasks =
List<ITask>();
sessionTasks.Add(
Task()
ID = 1,
ParentID =
,
OrderID = 0,
Start = DateTime.Now,
End = DateTime.Now.AddDays(2),
PercentComplete = 0.2M,
Summary =
false
Title =
"Title 1"
Expanded =
true
});
HttpContext.Current.Session[TasksKey] = sessionTasks;
sessionTasks;
override
ITaskFactory TaskFactory
CustomGanttTaskFactory();
#region Tasks
List<ITask> GetTasks()
AllTasks;
ITask UpdateTask(ITask task)
ITask taskToUpdate = FindTaskById(task.ID);
taskToUpdate.Title = task.Title;
taskToUpdate.Start = task.Start;
taskToUpdate.End = task.End;
taskToUpdate.Summary = task.Summary;
taskToUpdate.Expanded = task.Expanded;
taskToUpdate.ParentID = task.ParentID;
task;
ITask DeleteTask(ITask task)
AllTasks.Remove(FindTaskById(task.ID));
ITask InsertTask(ITask task)
task.ID = ++LastTaskID;
AllTasks.Add(task);
#endregion
#region Dependencies
List<IDependency> GetDependencies()
AllDependencies;
IDependency DeleteDependency(IDependency dependency)
AllDependencies.Remove(FindDependencyById(dependency.ID));
dependency;
IDependency InsertDependency(IDependency dependency)
dependency.ID = ++LastDependencyID;
AllDependencies.Add(dependency);
ITask FindTaskById(
object
id)
AllTasks.FirstOrDefault(t => t.ID.Equals(id));
IDependency FindDependencyById(
AllDependencies.FirstOrDefault(d => d.ID.Equals(id));
Default.aspx
<
telerik:RadGantt
runat
=
"server"
ID
"RadGantt1"
SelectedView
"WeekView"
AutoGenerateColumns
"true"
></
>
protected
void
Page_Load(
sender, EventArgs e)
RadGantt1.Provider =
MyCustomProvider();
Resources Buy Try