This question is locked. New answers and comments are not allowed.
Hi,
I am using GanttView for Silverlight and i am using collection to Bind the data(not in MVMM method in online example).
Please let me know how to include the Zoom option to the collection and also i want a suggestion to add the dependency for the below code (binding data to Collection).
Please find my code as below.
Regards,
Kannan
XAML code:
C# code:
I am using GanttView for Silverlight and i am using collection to Bind the data(not in MVMM method in online example).
Please let me know how to include the Zoom option to the collection and also i want a suggestion to add the dependency for the below code (binding data to Collection).
Please find my code as below.
Regards,
Kannan
XAML code:
<Grid x:Name="LayoutRoot" Background="White"> <!--<telerik:RadGanttView Name="xGanttView" HorizontalAlignment="Left" Margin="18,1,0,0" VerticalAlignment="Top" Width="Auto" />--> <telerik:RadGanttView x:Name="ganttview" BorderBrush="#FFD6D4D4" Width="1000" BorderThickness="1 0 1 1" Grid.Row="1" Margin="0 6 0 0"> <telerik:RadGanttView.TimeRulerLines> <telerik:GroupTickLine> <telerik:TickInterval Interval="OneMonth" FormatString="{}{0:MMMM, yyyy}" /> </telerik:GroupTickLine> <telerik:MajorTickLine> <telerik:TickInterval Interval="OneDay" FormatString="Day {0:dd}" /> </telerik:MajorTickLine> </telerik:RadGanttView.TimeRulerLines> <telerik:RadGanttView.Columns> <telerik:TreeColumnDefinition MemberBinding="{Binding Title}" Header="" ColumnWidth="5"> </telerik:TreeColumnDefinition> <telerik:ColumnDefinition MemberBinding="{Binding Title}" Header="Title" ColumnWidth="120"> </telerik:ColumnDefinition> <telerik:ColumnDefinition MemberBinding="{Binding Start,Converter={StaticResource TimeToCustomStringConverter}}" Header="Start" ColumnWidth="120"> </telerik:ColumnDefinition> <telerik:ColumnDefinition MemberBinding="{Binding End,Converter={StaticResource TimeToCustomStringConverter}}" Header="End" ColumnWidth="120"> </telerik:ColumnDefinition> <telerik:ColumnDefinition MemberBinding="{Binding Duration,Converter={StaticResource TimeToCustomStringConverter}}" Header="Duration" ColumnWidth="100"> </telerik:ColumnDefinition> <telerik:ColumnDefinition MemberBinding="{Binding Progress}" Header="Progress" ColumnWidth="100"> </telerik:ColumnDefinition> <!--<telerik:ColumnDefinition MemberBinding="{Binding IsMilestone}" Header="IsMilestone" ColumnWidth="100" />--> </telerik:RadGanttView.Columns> </telerik:RadGanttView> </Grid>using System;using System.Collections.Generic;using System.Linq;using System.Net;using System.Windows;using System.Windows.Controls;using System.Windows.Documents;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Animation;using System.Windows.Shapes;using Telerik.Windows.Controls.GanttView;using Telerik.Windows.Controls.Scheduling;using System.Collections.ObjectModel;using SLGanttChart.WcfRef;using Telerik.Windows.Controls;namespace SLGanttChart{ public partial class MainPage : UserControl { public static Collection<WcfRef.ProjectPlan_BO> lstProjectPlan; private IRangeGenerator specialSlotsGenerator; public static Collection<ProjectPlan> lstProject; private readonly static Dictionary<string, Tuple<GanttTask, string>> taskIdToGanttTask = new Dictionary<string, Tuple<GanttTask, string>>(); private readonly static Dictionary<string, IList<string>> taskToRelation = new Dictionary<string, IList<string>>(); public MainPage() { InitializeComponent(); Random rnd = new Random(); this.Loaded += new RoutedEventHandler(MainPage_Loaded); } void wcf_GetProjectPlanForDashboardCompleted(object sender, GetProjectPlanForDashboardCompletedEventArgs e) { lstProjectPlan = e.Result; int i=0; int j=0; DateTime minDate=(from lst in lstProjectPlan select lst.PlannedStartDate).Min(); DateTime maxDate=(from lst in lstProjectPlan select lst.PlannedStartDate).Max(); VisibleRange vr = new VisibleRange(minDate, maxDate); ganttview.VisibleRange = vr; var tasks=new ObservableCollection<GanttTask>(); var gt = new GanttTask(); //gt.UniqueId = "0"; gt.Title = "Project Name"; gt.Start = maxDate; gt.End = minDate; Boolean isDependency=false; for (i = 0; i < lstProjectPlan.Count-1; i++) { j = i++; if (j <= i) { if (lstProjectPlan[i].ExecutableFlag == "DEPN") isDependency = true; else if(lstProjectPlan[j].ExecutableFlag =="DEPN") isDependency=false; } if (isDependency) { var task1 = new GanttTask(); var task2 = new GanttTask(); //task1.UniqueId = i + lstProjectPlan[i].ExecutableFlag; if (lstProjectPlan[i].ExecutableFlag == "DEPN") task1.Title = lstProjectPlan[i].ActivityName + "*"; else task1.Title = lstProjectPlan[i].ActivityName; if (lstProjectPlan[i].PlannedStartDate != null) task1.Start = lstProjectPlan[i].PlannedStartDate; else if (lstProjectPlan[i].RevisedStartDate != null) task1.Start = lstProjectPlan[i].RevisedStartDate; else if (lstProjectPlan[i].ActualStartDate != null) task1.Start = lstProjectPlan[i].ActualStartDate; if (lstProjectPlan[i].PlannedEndDate != null) task1.End = lstProjectPlan[i].PlannedEndDate; else if (lstProjectPlan[i].RevisedEndDate != null) task1.End = lstProjectPlan[i].RevisedEndDate; else if (lstProjectPlan[i].ActualEndDate != null) task1.End = lstProjectPlan[i].ActualEndDate; if (lstProjectPlan[i].ExecutableFlag == "MILE") task1.IsMilestone = true; task1.Progress = lstProjectPlan[i].Percentage; //task2.UniqueId = j + lstProjectPlan[j].ExecutableFlag; task2.Title = lstProjectPlan[j].ActivityName; if (lstProjectPlan[j].PlannedStartDate != null) task2.Start = lstProjectPlan[j].PlannedStartDate; else if (lstProjectPlan[j].RevisedStartDate != null) task2.Start = lstProjectPlan[j].RevisedStartDate; else if (lstProjectPlan[j].ActualStartDate != null) task2.Start = lstProjectPlan[j].ActualStartDate; if (lstProjectPlan[j].PlannedEndDate != null) task2.End = lstProjectPlan[j].PlannedEndDate; else if (lstProjectPlan[j].RevisedEndDate != null) task2.End = lstProjectPlan[j].RevisedEndDate; else if (lstProjectPlan[j].ActualEndDate != null) task2.End = lstProjectPlan[j].ActualEndDate; if (lstProjectPlan[j].ExecutableFlag == "MILE") task2.IsMilestone = true; task2.Progress = lstProjectPlan[j].Percentage; task2.Dependencies.Add(new Dependency() { FromTask = task1 ,Type=RelationType.FinishFinish}); gt.Children.Add(task1); gt.Children.Add(task2); } else { var task1 = new GanttTask(); //task1.UniqueId = i + lstProjectPlan[i].ExecutableFlag; task1.Title = lstProjectPlan[i].ActivityName; if (lstProjectPlan[i].PlannedStartDate != null) task1.Start = lstProjectPlan[i].PlannedStartDate; else if (lstProjectPlan[i].RevisedStartDate != null) task1.Start = lstProjectPlan[i].RevisedStartDate; else if (lstProjectPlan[i].ActualStartDate != null) task1.Start = lstProjectPlan[i].ActualStartDate; if (lstProjectPlan[i].PlannedEndDate != null) task1.End = lstProjectPlan[i].PlannedEndDate; else if (lstProjectPlan[i].RevisedEndDate != null) task1.End = lstProjectPlan[i].RevisedEndDate; else if (lstProjectPlan[i].ActualEndDate != null) task1.End = lstProjectPlan[i].ActualEndDate; if (lstProjectPlan[i].ExecutableFlag == "MILE") task1.IsMilestone = true; task1.Progress = lstProjectPlan[i].Percentage; gt.Children.Add(task1); } } tasks.Add(gt); ganttview.TasksSource = tasks; } void MainPage_Loaded(object sender, RoutedEventArgs e) { //WCFServiceClient wcf = new WCFServiceClient("BasicHttpBinding_WCFService", "https://qarmtestother.cognizant.com/wcfservice.svc"); //wcf.GetProjectPlanForDashboardCompleted += new EventHandler<GetProjectPlanForDashboardCompletedEventArgs>(wcf_GetProjectPlanForDashboardCompleted); //wcf.GetProjectPlanForDashboardAsync(8347); //getTasks(); fillTasks(); } public void getTasks() { var Tasks = new ObservableCollection<GanttTask>(); var d = new DateTime(2012, 3, 1); for (int i = 0; i < 4; i++) { var gt = new GanttTask(d.AddDays(14 * i), d.AddDays(14 * i + 14), "Title " + i.ToString()); for (int j = 0; j < gt.Duration.Days; j++) { var childGT = new GanttTask(); childGT.Start = gt.Start.AddDays(j); childGT.End = childGT.Start.AddHours(23); childGT.Title = "Child " + i.ToString() + "/" + j.ToString(); gt.Children.Add(childGT); if (j > 0) { GanttTask prevGt = gt.Children[j - 1] as GanttTask; prevGt.Dependencies.Add(new Dependency() { FromTask = prevGt }); gt.Children.Add(prevGt); } } Tasks.Add(gt); } ganttview.TasksSource = Tasks; var majorTickLine = new MajorTickLine(); majorTickLine.Intervals.Add(new TickInterval { Interval = TimeRulerTickInterval.OneDay }); this.ganttview.TimeRulerLines.Clear(); this.ganttview.TimeRulerLines.Add(majorTickLine); } public void fillTasks() { lstProject = new Collection<ProjectPlan>(); ProjectPlan lstPrj = new ProjectPlan(); lstPrj.Title = "ProjectABC"; lstPrj.Start = Convert.ToDateTime("12/07/2012"); lstPrj.End = Convert.ToDateTime("01/10/2012"); lstPrj.IsDependency = false; lstPrj.IsMilestone = false; lstPrj.Duration = lstPrj.End.Subtract(lstPrj.Start); lstProject.Add(lstPrj); ProjectPlan lstPrj1 = new ProjectPlan(); lstPrj1.Title = "Code Drop"; lstPrj1.Start = Convert.ToDateTime("12/07/2012"); lstPrj1.End = Convert.ToDateTime("12/07/2012"); lstPrj1.IsDependency = true; lstPrj1.IsMilestone = false; lstPrj1.Duration = lstPrj1.End.Subtract(lstPrj1.Start); lstProject.Add(lstPrj1); ProjectPlan lstPrj2 = new ProjectPlan(); lstPrj2.Title = "ST Cycle1"; lstPrj2.Start = Convert.ToDateTime("13/07/2012"); lstPrj2.End = Convert.ToDateTime("31/08/2012"); lstPrj2.IsDependency = false; lstPrj2.IsMilestone = false; lstPrj2.Duration = lstPrj2.End.Subtract(lstPrj2.Start); lstProject.Add(lstPrj2); ProjectPlan lstPrj3 = new ProjectPlan(); lstPrj3.Title = "ST Cycle2"; lstPrj3.Start = Convert.ToDateTime("03/09/2012"); lstPrj3.End = Convert.ToDateTime("29/09/2012"); lstPrj3.IsDependency = false; lstPrj3.IsMilestone = false; lstPrj3.Duration = lstPrj3.End.Subtract(lstPrj3.Start); lstProject.Add(lstPrj3); ProjectPlan lstPrj4 = new ProjectPlan(); lstPrj4.Title = "ETOR Report"; lstPrj4.Start = Convert.ToDateTime("01/10/2012"); lstPrj4.End = Convert.ToDateTime("29/10/2012"); lstPrj4.IsDependency = false; lstPrj4.IsMilestone = true; lstPrj4.Duration = lstPrj4.End.Subtract(lstPrj4.Start); lstProject.Add(lstPrj4); DateTime dtMax = (from lst in lstProject select lst.Start).Max(); DateTime dtMin = (from lst in lstProject select lst.End).Min(); //var d = dtMax; ganttview.VisibleRange = new VisibleRange(dtMin, dtMax); var tasks = new ObservableCollection<GanttTask>(); var gt = new GanttTask(); gt.UniqueId = "0"; gt.Title = lstPrj.Title; gt.Start = dtMin; gt.End = dtMax; gt.Duration = dtMax.Subtract(dtMin); //gt.Progress= //this.SpecialSlotsGenerator = new WeekDaysGenerator(); ganttview.SpecialSlotsGenerator = specialSlotsGenerator; int i = 0; foreach (ProjectPlan lst in lstProject.Skip(1)) { var childGT = new GanttTask(); childGT.UniqueId = i.ToString(); childGT.Start = lst.Start; childGT.End = lst.End; childGT.Title = lst.Title; childGT.Duration = childGT.End.Subtract(childGT.Start); childGT.IsMilestone = lst.IsMilestone; gt.Children.Add(childGT); i++; } tasks.Add(gt); ganttview.TasksSource = tasks; var majorTickLine = new MajorTickLine(); majorTickLine.Intervals.Add(new TickInterval { Interval = TimeRulerTickInterval.OneDay }); this.ganttview.TimeRulerLines.Clear(); this.ganttview.TimeRulerLines.Add(majorTickLine); } } public class ProjectPlan { public string Title{get;set;} public DateTime Start {get;set;} public DateTime End { get; set; } public double Progress { get; set; } public TimeSpan Duration { get; set; } public string ExecutableFlag { get; set; } public Boolean IsMilestone { get; set; } public Boolean IsDependency { get; set; } }}