Skip to main content

Bind to Self-Reference Data

  • 2 minutes to read

This topic covers binding the GanttControl to self-reference data structures.

Self-Reference Data Structure

The GanttControl supports binding to plain data sources.

To represent tasks in a tree structure, the child tasks should reference the parent tasks:

  • Key Field

    This field should contain unique values used to identify nodes. Assign its name to the GanttView’s TreeListView.KeyFieldName property.

  • Parent Field

    This field should contain values that indicate parent nodes. Assign its name to the GanttView’s TreeListView.ParentFieldName property.

Columns bound to these fields are called service columns, and are not created by default.

The code sample below demonstrates tasks with the Id and ParentId properties, that allow you to organize task hierarchy.

public class Task {
    public int Id { get; set; }
    public int ParentId { get; set; } = -1;
    public string Name { get; set; }
    public DateTime Start { get; set; }
    public DateTime Finish { get; set; }
}

Bind to Self-Reference Data Sources

You can bind the GanttControl to self-reference plain data source by specifying the GanttView‘s TreeListView.KeyFieldName and the TreeListView.ParentFieldName properties.

<dxgn:GanttControl ItemsSource="{Binding Tasks}">
    <dxgn:GanttControl.View>
        <dxgn:GanttView
            AutoExpandAllNodes="True"
            TreeDerivationMode="Selfreference"
            KeyFieldName="Id"
            ParentFieldName="ParentId"
            StartDateMapping="Start"
            FinishDateMapping="Finish"
            NameMapping="Name" />
    </dxgn:GanttControl.View>
</dxgn:GanttControl>

The code sample above demonstrates mapping task properties to data source properties. Refer to the Mappings topic for more information.

Next Steps

Refer to the Task Dependencies topic for more information on how to retrieve task dependencies from the data source.