Completed
Last Updated: 30 Jan 2015 09:13 by ADMIN
To reproduce: 
1. Drag and drop RadGanttView
2. Add summary task with 3 sub tasks
3. Set the ReadOnly property to true
4. Run the form and try to move summary task. The user should not be able to move summary task or any other task when is in read only mode. 

Workaround: 
You can set the following properties: 
this.radGanttView1.ReadOnly = true;
this.radGanttView1.AllowSummaryEditing = false;
Unplanned
Last Updated: 29 Dec 2017 17:07 by Ryan
Add functionality to sort tasks alphabetically, by date, by progress.
Unplanned
Last Updated: 15 Aug 2017 10:02 by ADMIN
Add functionality to filter items in RadGanttView. 
Completed
Last Updated: 20 Jan 2015 14:49 by ADMIN
To reproduce: 
 public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

        this.radGanttView1.GanttViewElement.GraphicalViewElement.TimelineStart = new DateTime(2010, 10, 9);
        this.radGanttView1.GanttViewElement.GraphicalViewElement.TimelineEnd = new DateTime(2010, 12, 10);

        this.FillGanttViewWithData();
    }

    private void radGanttView1_SelectedItemChanged(object sender, GanttViewSelectedItemChangedEventArgs e)
    {
        var dateToFocus = e.Item.Start;
        this.radGanttView1.GanttViewElement.GraphicalViewElement.ScrollTo(dateToFocus);
    }

    private void FillGanttViewWithData()
    {
        //setup data items
        GanttViewDataItem item1 = new GanttViewDataItem();
        item1.Start = new DateTime(2010, 10, 10);
        item1.End = new DateTime(2010, 10, 15);
        item1.Progress = 30m;
        item1.Title = "Summary task.1. title";

        GanttViewDataItem subitem11 = new GanttViewDataItem();
        subitem11.Start = new DateTime(2010, 10, 10);
        subitem11.End = new DateTime(2010, 10, 12);
        subitem11.Progress = 10m;
        subitem11.Title = "Sub-task.1.1 title";

        GanttViewDataItem subitem12 = new GanttViewDataItem();
        subitem12.Start = new DateTime(2010, 10, 12);
        subitem12.End = new DateTime(2010, 10, 15);
        subitem12.Progress = 20m;
        subitem12.Title = "Sub-task.1.2 title";

        //add subitems
        item1.Items.Add(subitem11);
        item1.Items.Add(subitem12);

        this.radGanttView1.Items.Add(item1);

        GanttViewDataItem item2 = new GanttViewDataItem();
        item2.Start = new DateTime(2010, 10, 12);
        item2.End = new DateTime(2010, 10, 18);
        item2.Progress = 40m;
        item2.Title = "Summary task.2. title";

        GanttViewDataItem subitem21 = new GanttViewDataItem();
        subitem21.Start = new DateTime(2010, 10, 12);
        subitem21.End = new DateTime(2010, 10, 13);
        subitem21.Progress = 10m;
        subitem21.Title = "Sub-task.2.1 title";

        GanttViewDataItem subitem22 = new GanttViewDataItem();
        subitem22.Start = new DateTime(2010, 10, 13);
        subitem22.End = new DateTime(2010, 10, 18);
        subitem22.Progress = 30m;
        subitem22.Title = "Sub-task.2.2 title";

        GanttViewDataItem subitem23 = new GanttViewDataItem();
        subitem23.Start = new DateTime(2010, 10, 18);
        subitem23.End = new DateTime(2010, 10, 18);
        subitem23.Title = "Sub-task.2.3 title";

        //add subitems
        item2.Items.Add(subitem21);
        item2.Items.Add(subitem22);
        item2.Items.Add(subitem23);

        this.radGanttView1.Items.Add(item2);

        //add links between items
        GanttViewLinkDataItem link1 = new GanttViewLinkDataItem();
        link1.StartItem = subitem11;
        link1.EndItem = subitem12;
        link1.LinkType = TasksLinkType.FinishToStart;
        this.radGanttView1.Links.Add(link1);

        GanttViewLinkDataItem link2 = new GanttViewLinkDataItem();
        link2.StartItem = subitem21;
        link2.EndItem = subitem22;
        link2.LinkType = TasksLinkType.StartToStart;
        this.radGanttView1.Links.Add(link2);

        GanttViewLinkDataItem link3 = new GanttViewLinkDataItem();
        link3.StartItem = subitem22;
        link3.EndItem = subitem23;
        link3.LinkType = TasksLinkType.FinishToStart;
        this.radGanttView1.Links.Add(link3);

        GanttViewTextViewColumn titleColumn = new GanttViewTextViewColumn("Title");
        GanttViewTextViewColumn startColumn = new GanttViewTextViewColumn("Start");
        GanttViewTextViewColumn endColumn = new GanttViewTextViewColumn("End");

        this.radGanttView1.GanttViewElement.Columns.Add(titleColumn);
        this.radGanttView1.GanttViewElement.Columns.Add(startColumn);
        this.radGanttView1.GanttViewElement.Columns.Add(endColumn);
    }
}

Workaround: 
public class CustomGanttView : RadGanttView
{
    protected override RadGanttViewElement CreateGanttViewElement()
    {
        return new CustomGanttViewElement();
    }

    public override string ThemeClassName
    {
        get { return typeof(RadGanttView).FullName; }
    }
}

public class CustomGanttViewElement : RadGanttViewElement
{
    protected override GanttViewGraphicalViewElement CreateGraphicalViewElement(RadGanttViewElement ganttView)
    {
        return new CustomGanttViewGraphicalViewElement(this);
    }

    protected override Type ThemeEffectiveType
    {
        get { return typeof(RadGanttViewElement); }
    }
}

public class CustomGanttViewGraphicalViewElement : GanttViewGraphicalViewElement
{

    public CustomGanttViewGraphicalViewElement(RadGanttViewElement ganttView)
        : base(ganttView)
    { }

    protected override Type ThemeEffectiveType
    {
        get { return typeof(GanttViewGraphicalViewElement); }
    }

    public override bool ScrollTo(DateTime dateTime)
    {
        if (dateTime < this.TimelineBehavior.AdjustedTimelineStart || dateTime > this.TimelineBehavior.AdjustedTimelineEnd)
        {
            return false;
        }

        float halfViewWidth = (float)this.ViewElement.Size.Width / 2f;
        float x = (float)((dateTime - this.TimelineBehavior.AdjustedTimelineStart).TotalSeconds / this.OnePixelTime.TotalSeconds);
        x -= halfViewWidth;

        if (x < 0)
        {
            this.TimelineScroller.Scrollbar.Value = this.TimelineScroller.Scrollbar.Minimum;
        }
        else if (x > this.TimelineScroller.Scrollbar.Maximum)
        {
            this.TimelineScroller.Scrollbar.Value = this.TimelineScroller.Scrollbar.Maximum - this.TimelineScroller.Scrollbar.LargeChange;
        }
        else
        {
            this.TimelineScroller.Scrollbar.Value = (int)x;
        }

        return true;
    }
}
Unplanned
Last Updated: 11 Oct 2017 07:53 by Longnd
ADMIN
Created by: Dess | Tech Support Engineer, Principal
Comments: 1
Category: GanttView
Type: Feature Request
2
Add possibility to specify the start and end hours when you display hours in the applied time scale. 
Unplanned
Last Updated: 15 Aug 2017 10:02 by ADMIN
Completed
Last Updated: 19 Feb 2015 17:19 by ADMIN
To reproduce:
- Add enough items so that the vertical scroll is shown.
- Scroll so the first item is not visible.
- Move one of the visible items.
Completed
Last Updated: 10 Nov 2014 12:26 by ADMIN
To reproduce: use the following code snippet and perform the described steps below:

Sub New()
    InitializeComponent()

    PopulateData()
End Sub

Private Sub PopulateData()

    Dim tasks As New DataTable("Tasks")
    tasks.Columns.Add("Id", GetType(Integer))
    tasks.Columns.Add("ParentId", GetType(Integer))
    tasks.Columns.Add("Title", GetType(String))
    tasks.Columns.Add("Start", GetType(DateTime))
    tasks.Columns.Add("End", GetType(DateTime))
    tasks.Columns.Add("Progress", GetType(Decimal))

    Dim links As New DataTable("Links")
    links.Columns.Add("StartId", GetType(Integer))
    links.Columns.Add("EndId", GetType(Integer))
    links.Columns.Add("LinkType", GetType(Integer))

    Dim data As New DataSet()
    data.Tables.Add(tasks)
    data.Tables.Add(links)

    tasks.Rows.Add(1, 0, "Summary task title", New DateTime(2010, 10, 10), New DateTime(2010, 10, 15), 30D)
    tasks.Rows.Add(2, 1, "First child task title", New DateTime(2010, 10, 10), New DateTime(2010, 10, 12), 10)
    tasks.Rows.Add(3, 1, "Second child task title", New DateTime(2010, 10, 12), New DateTime(2010, 10, 15), 20D)
    tasks.Rows.Add(4, 1, "Milestone", New DateTime(2010, 10, 15), New DateTime(2010, 10, 15), 0D)

    links.Rows.Add(2, 3, 1)
    links.Rows.Add(3, 4, 1)

    Me.RadGanttView1.GanttViewElement.TaskDataMember = "Tasks"
    Me.RadGanttView1.GanttViewElement.ChildMember = "Id"
    Me.RadGanttView1.GanttViewElement.ParentMember = "ParentId"
    Me.RadGanttView1.GanttViewElement.TitleMember = "Title"
    Me.RadGanttView1.GanttViewElement.StartMember = "Start"
    Me.RadGanttView1.GanttViewElement.EndMember = "End"
    Me.RadGanttView1.GanttViewElement.ProgressMember = "Progress"
    Me.RadGanttView1.GanttViewElement.LinkDataMember = "Links"
    Me.RadGanttView1.GanttViewElement.LinkStartMember = "StartId"
    Me.RadGanttView1.GanttViewElement.LinkEndMember = "EndId"
    Me.RadGanttView1.GanttViewElement.LinkTypeMember = "LinkType"

    Me.RadGanttView1.GanttViewElement.DataSource = data

    Me.RadGanttView1.Columns.Clear()
    Me.RadGanttView1.Columns.Add("Start")
    Me.RadGanttView1.Columns.Add("End")
    Me.RadGanttView1.GanttViewElement.GraphicalViewElement.TimelineStart = New DateTime(2010, 10, 9)
    Me.RadGanttView1.GanttViewElement.GraphicalViewElement.TimelineEnd = New DateTime(2010, 12, 10)
End Sub

Private Sub RadButton1_Click(sender As Object, e As EventArgs) Handles RadButton1.Click
    Dim selected = Me.RadGanttView1.SelectedItem.Title

    Me.RadGanttView1.DataSource = Nothing
    PopulateData()

    Dim result = FindDataItem(selected, Me.RadGanttView1.Items)

    If result IsNot Nothing Then
        Me.RadGanttView1.SelectedItem = result
    End If
End Sub

Dim found = Nothing
Private Function FindDataItem(selected As String, items As GanttViewDataItemCollection) As GanttViewDataItem

    For Each item As GanttViewDataItem In items
        If item.Title = selected Then
            Return item
        End If

        Dim itm As GanttViewDataItem = FindDataItem(selected, item.Items)

        If itm IsNot Nothing Then
            Return itm
        End If
    Next
    Return Nothing
End Function

1.Select a random task item
2.Click the button to rebind and restore the selection
As a result you will encounter a NullReferenceException.

Workaround: set the SelectedItem property to null/Nothing before rebinding
Completed
Last Updated: 15 Sep 2014 08:35 by ADMIN
1. Set up a RadGanttView with some data

2. Do not add any columns

3. Run the project and press the Left or Right Arrow key. An IndexOutOfRange exception will be thrown.
Completed
Last Updated: 09 Sep 2014 09:36 by ADMIN
Steps to reproduce:

1. Add six items to a RadGanttView

2. Start reducing the height of the gantt view

You will notice that the vertical scroll bar does not appear until two of the items are hidden. Before that the hidden items cannot be scrolled to.
Completed
Last Updated: 29 Sep 2014 09:07 by ADMIN
To reproduce: add a RadGanttView and populate it with data. Use the  GraphicalViewItemFormatting event in order to change the e.ItemElement.TaskElement.Text. However, the changes are not applied.

Workaround:
 private void radGanttView1_GraphicalViewItemFormatting(object sender, GanttViewGraphicalViewItemFormattingEventArgs e)
 {
     e.ItemElement.Tag = "Custom text";
 }

 public class CustomRadGanttView : RadGanttView
 {
     protected override RadGanttViewElement CreateGanttViewElement()
     {
         return new CustomRadGanttViewElement();
     }

     public override string ThemeClassName  
     { 
         get 
         { 
             return typeof(RadGanttView).FullName;  
         }
     }
 }

 public class CustomRadGanttViewElement : RadGanttViewElement
 {
     public CustomRadGanttViewElement()
     {
     }

     protected override Type ThemeEffectiveType     
     { 
         get    
         { 
             return typeof(RadGanttViewElement);     
         }
     }
     
     protected override GanttViewGraphicalViewElement CreateGraphicalViewElement(RadGanttViewElement ganttView)
     {
         return new CustomGanttViewGraphicalViewElement(ganttView);
     }
 }

 public class CustomGanttViewGraphicalViewElement : GanttViewGraphicalViewElement
 {
     public CustomGanttViewGraphicalViewElement(RadGanttViewElement ganttView) : base(ganttView)
     {
     }

     protected override Type ThemeEffectiveType     
     { 
         get    
         { 
             return typeof(GanttViewGraphicalViewElement);     
         }
     }
     
     protected override IVirtualizedElementProvider<GanttViewDataItem> CreateElementProvider()
     {
         return new CustomGanttViewVirtualizedElementProvider(this);
     }
 }

 public class CustomGanttViewVirtualizedElementProvider : GanttViewVirtualizedElementProvider
 {
     public CustomGanttViewVirtualizedElementProvider(GanttViewBaseViewElement owner) : base(owner)
     {
     }

     public override IVirtualizedElement<GanttViewDataItem> CreateElement(GanttViewDataItem data, object context)
     {
         IVirtualizedElement<GanttViewDataItem> taskElement = base.CreateElement(data, context) ;
         if (taskElement is GanttViewTaskItemElement)
         {
             FieldInfo fi = typeof(GanttViewVirtualizedElementProvider).GetField("owner", BindingFlags.NonPublic | BindingFlags.Instance);
             GanttViewBaseViewElement owner = fi.GetValue(this) as GanttViewBaseViewElement ;
               
             return new CustomGanttViewTaskItemElement(owner as GanttViewGraphicalViewElement);
         }

         return taskElement;
     }
 }

 public class CustomGanttViewTaskItemElement:GanttViewTaskItemElement
 {
     public CustomGanttViewTaskItemElement(GanttViewGraphicalViewElement owner) : base(owner)
     {
     }

     public override void Synchronize()
     {
         base.Synchronize();
         
         if (this.Tag != null)
         {
             this.TaskElement.Text = this.Tag.ToString();
         }
     }
 }
Completed
Last Updated: 09 Sep 2014 10:29 by ADMIN
Currently users are not able to create custom item elements for the gantt view timeline. 
Unplanned
Last Updated: 15 Aug 2017 09:45 by ADMIN
ADMIN
Created by: Dess | Tech Support Engineer, Principal
Comments: 0
Category: GanttView
Type: Feature Request
1
Add functionality to perform grouping over the columns in the GanttViewTextViewElement . As a result the GraphicalViewElement should be refreshed accordingly.
Unplanned
Last Updated: 21 Jun 2018 14:00 by ADMIN
ADMIN
Created by: Dess | Tech Support Engineer, Principal
Comments: 2
Category: GanttView
Type: Feature Request
6
Columns can automatically fill the entire width of the GanttViewTextViewElement . Just set the AutoSizeColumnsMode property  to Fill.
Completed
Last Updated: 20 Oct 2014 14:04 by ADMIN
Improve the way to format easily summary task. Currently you need to cast all elements of summary element to change the BackColor. 

Resolution: 
There are three properties added to GanttViewSummaryElement which allow access to the inner elements: LeftElement, MiddleElement and RightElement. 
Please take a look at the code example: 
private void radGanttView1_GraphicalViewItemFormatting(object sender, GanttViewGraphicalViewItemFormattingEventArgs e)
{
    GanttViewSummaryItemElement element = e.ItemElement as GanttViewSummaryItemElement;
    if (element != null)
    {
        GanttViewSummaryElement summary = element.TaskElement as GanttViewSummaryElement;
        summary.LeftElement.BackColor = Color.Blue;
        summary.RightElement.BackColor = Color.Blue;
        summary.MiddleElement.BackColor = Color.LightGreen;
        summary.ProgressIndicatorElement.BackColor = Color.Red;
    }
}
Unplanned
Last Updated: 15 Aug 2017 09:45 by ADMIN
ADMIN
Created by: Dess | Tech Support Engineer, Principal
Comments: 5
Category: GanttView
Type: Feature Request
3

			
Completed
Last Updated: 01 Oct 2014 12:18 by ADMIN
Steps to reproduce:

1. Add a gantt view to a form and add two buttons, one for adding a new child to the selected item and one for removing the selected item.
2. Run the project and add child items to a normal task item - the item should become a summary item.
3. Remove all the child items of a summary item - it should become a normal task.
Completed
Last Updated: 07 Oct 2014 15:03 by ADMIN
To reproduce:

Add a RadGanttView to a form and set its Dock to Fill. Increase the size of the form. Add 3-4 events to the RadGanttView and start the application. Reduce the size of the form until the gantt is small enough so scrollbars should show. You will notice that the vertical scrollbars will not show.
Completed
Last Updated: 14 Oct 2014 06:11 by ADMIN
To reproduce:

Bind to an object with a property of type double. Start the application and edit that same column. End the editing process and you will see an exception that decimal cannot be converted to double.

Workaround:

Create the following custom editor:

public class MySpinEditor : GanttViewSpinEditor
{
    public override object Value
    {
        get
        {
            object value = base.Value;
            return Convert.ChangeType(value, this.ValueType);
        }
        set
        {
            base.Value = value;
        }
    }
}

Subscribe to the EditorInitialized and EditorRequired events and use the following event handlers:

void GanttViewElement_EditorInitialized(object sender, GanttViewItemEditorInitializedEventArgs e)
{
    GanttViewSpinEditor spinEditor = e.Editor as GanttViewSpinEditor;
    if (spinEditor != null)
    {
        spinEditor.ValueType = typeof(double);
    }
}


void GanttViewElement_EditorRequired(object sender, GanttViewEditorRequiredEventArgs e)
{
    if (e.EditorType == typeof(GanttViewSpinEditor))
    {
        e.EditorType = typeof(MySpinEditor);
    }
}