Hi,
i try to ad custom column to RadGantt and seems that is not working as expected. can you help me out to solve the issue?
here is default.aspx
<asp:UpdatePanel ID="UpdatePanel" runat="server">
<ContentTemplate>
<telerik:RadGantt runat="server" ID="RadGantt1" SelectedView="MonthView" ReadOnly="true" AutoGenerateColumns="false" >
<Columns>
<telerik:GanttBoundColumn DataField="ID" Width="10px"></telerik:GanttBoundColumn>
<telerik:GanttBoundColumn DataField="Title" ></telerik:GanttBoundColumn>
<telerik:GanttBoundColumn DataField="ProjectLink" HeaderText="Project Link" DataType="String" UniqueName="PorjectLink"></telerik:GanttBoundColumn>
</Columns>
<CustomTaskFields>
<telerik:GanttCustomField PropertyName="ProjectLink" ClientPropertyName="projectlink" Type="String" />
</CustomTaskFields>
</telerik:RadGantt>
</ContentTemplate>
</asp:UpdatePanel>
here is code.
protected void Page_Load(object sender, EventArgs e)
{
GanttCustomField customField = new GanttCustomField();
customField.Type = GanttCustomFieldType.String;
customField.PropertyName = "ProjectLink";
customField.ClientPropertyName = "projectlink";
RadGantt1.CustomTaskFields.Add(customField);
RadGantt1.Provider = new GanttProvider();
}
here is helper class
public class ProgramTask : Task
{
public ProgramTask()
: base()
{
}
public string ProjectLink { get; set; }
private ProgramTask ToEntityTask(ITask srcTask)
{
return new ProgramTask
{
ID = (int)srcTask.ID,
ParentID = (int?)srcTask.ParentID,
Title = srcTask.Title,
Start = srcTask.Start,
End = srcTask.End,
ProjectLink = ((ProgramTask)srcTask).ProjectLink
};
}
protected override IDictionary<string, object> GetSerializationData()
{
var dict = base.GetSerializationData();
dict["ProjectLink"] = ProjectLink;
return dict;
}
public override void LoadFromDictionary(System.Collections.IDictionary values)
{
base.LoadFromDictionary(values);
ProjectLink = (string)values["ProjectLink"];
}
}
public class CustomGanttTaskFactory : ITaskFactory
{
Task ITaskFactory.CreateTask()
{
return new ProgramTask();
}
}
public class GanttProvider : Telerik.Web.UI.GanttProviderBase
{
public override ITaskFactory TaskFactory
{
get
{
return new CustomGanttTaskFactory();
}
}
public override List<ITask> GetTasks()
{
var tasks = new List<ITask>();
using (SPWeb web = SPContext.Current.Site.OpenWeb())
{
SPList list = web.Lists.TryGetList("Program Roadmap");
foreach (SPItem item in list.Items)
{
tasks.Add(new ProgramTask
{
ID = item.ID,
Title = item["Task Name"].ToString(),
Start = Convert.ToDateTime(item["Start Date"]),
End = Convert.ToDateTime(item["Due Date"]),
PercentComplete = Convert.ToDecimal(item["% Complete"]),
ProjectLink = item["ProjectLink"].ToString()
});
}
}
return tasks;
}
public override ITask UpdateTask(ITask task)
{
ProgramTask my = new ProgramTask();
return my;
}
public override ITask DeleteTask(ITask task)
{
ProgramTask my = new ProgramTask();
return my;
}
public override ITask InsertTask(ITask task)
{
ProgramTask my = new ProgramTask();
return my;
}
public override List<IDependency> GetDependencies()
{
var dependencies = new List<IDependency>();
return dependencies;
}
public override IDependency DeleteDependency(IDependency dependency)
{
return dependency;
}
public override IDependency InsertDependency(IDependency dependency)
{
return dependency;
}
}
I'd really appreciated it.
Dongwook