Back to Devexpress

GanttControl.DependencySource Property

windowsforms-devexpress-dot-xtragantt-dot-ganttcontrol-0b7e10b6.md

latest10.8 KB
Original Source

GanttControl.DependencySource Property

Gets or sets the data source that contains values that specify dependencies between tasks.

Namespace : DevExpress.XtraGantt

Assembly : DevExpress.XtraGantt.v25.2.dll

NuGet Package : DevExpress.Win.Gantt

Declaration

csharp
[DefaultValue(null)]
[DXCategory("Data")]
public object DependencySource { get; set; }
vb
<DXCategory("Data")>
<DefaultValue(Nothing)>
Public Property DependencySource As Object

Property Value

TypeDefaultDescription
Objectnull

An object that specifies a data source.

|

Remarks

The KeyFieldName property specifies the data field that stores a task’s unique identifier (key). These keys are used to specify dependencies between tasks.

Finish-to-Start Dependencies

The control’s DataSource property allows you to bind the control to a data source. The ChartMappings property provides access to data fields mapped to task properties that specify how a task is displayed in the chart area. The PredecessorsFieldName property specifies the data field that stores keys of task predecessors. Note that this data field allows you to specify finish-to-start dependencies only without time lag.

csharp
ganttControl1.ChartMappings.PredecessorsFieldName = "Predecessors";
vb
ganttControl1.ChartMappings.PredecessorsFieldName = "Predecessors"

The data field can be of the following types:

  • String — the string should contain keys separated by space, comma, or semicolon (‘ ‘, ‘,’ ‘;’).

  • IEnumerable — the enumerator should return key values of the same type as the key field.

Dependencies of Any Types

The DependencySource property allows you to bind the control to a data source that can store dependencies. Note that this additional data source allows you to specify dependencies of any type (finish-to-start, finish-to-finish, and so on) and any time lags.

If the data source contains multiple tables, use the DataMember property to specify the table that contains dependencies.

The DependencyMappings property allows you to specify data fields that should be mapped to dependency properties:

csharp
ganttControl1.DependencyMappings.PredecessorFieldName = "Predecessor";
ganttControl1.DependencyMappings.SuccessorFieldName = "Successor";
ganttControl1.DependencyMappings.TypeFieldName = "Type";
ganttControl1.DependencyMappings.LagFieldName = "Lag";
vb
ganttControl1.DependencyMappings.PredecessorFieldName = "Predecessor"
ganttControl1.DependencyMappings.SuccessorFieldName = "Successor"
ganttControl1.DependencyMappings.TypeFieldName = "Type"
ganttControl1.DependencyMappings.LagFieldName = "Lag"

See the following topic for more information: Task Dependencies.

Obtain or Set Dependencies in Code

Use the following methods to obtain an object that contains data for a specific dependency:

To specify the node in the method’s parameter, use the node’s Id property value.

The SetDependency(GanttControlNode, GanttControlNode, DependencyType, TimeSpan) method allows you to specify a dependency in code.

Example

The code below shows how to specify tasks and dependencies.

csharp
using DevExpress.XtraGantt;

ganttControl1.TreeListMappings.KeyFieldName = "ID";
ganttControl1.TreeListMappings.ParentFieldName = "ParentID";
ganttControl1.ChartMappings.TextFieldName = "Text";
ganttControl1.ChartMappings.StartDateFieldName = "StartDate";
ganttControl1.ChartMappings.FinishDateFieldName = "FinishDate";
ganttControl1.DataSource = GetTasks();

ganttControl1.DependencyMappings.PredecessorFieldName = "PredecessorID";
ganttControl1.DependencyMappings.SuccessorFieldName = "SuccessorID";
ganttControl1.DependencyMappings.TypeFieldName = "DependencyType";
ganttControl1.DependencyMappings.LagFieldName = "TimeLag";
ganttControl1.DependencySource = GetDependencies();

DataTable GetTasks() {
    DataTable table = new DataTable();
    DataColumn id = new DataColumn("ID", typeof(int));
    DataColumn parentId = new DataColumn("ParentID", typeof(int));
    DataColumn text = new DataColumn("Text", typeof(string));
    DataColumn start = new DataColumn("StartDate", typeof(DateTime));
    DataColumn finish = new DataColumn("FinishDate", typeof(DateTime));
    table.Columns.AddRange(new DataColumn[] { id, parentId, text, start, finish });
    table.Rows.Add(new object[] { 1, 0, "Task 1", DateTime.Now, DateTime.Now.AddDays(1) });
    table.Rows.Add(new object[] { 2, 0, "Task 2", DateTime.Now.AddDays(1), DateTime.Now.AddDays(2) });
    table.Rows.Add(new object[] { 3, 0, "Task 3", DateTime.Now.AddDays(2), DateTime.Now.AddDays(3) });
    return table;
}

DataTable GetDependencies() {
    DataTable table = new DataTable();
    DataColumn predecessor = new DataColumn("PredecessorID", typeof(int));
    DataColumn successor = new DataColumn("SuccessorID", typeof(int));
    DataColumn dependencyType = new DataColumn("DependencyType", typeof(DevExpress.XtraGantt.DependencyType));
    DataColumn lag = new DataColumn("TimeLag", typeof(TimeSpan));
    table.Columns.AddRange(new DataColumn[] { predecessor, successor, dependencyType, lag });
    table.Rows.Add(new object[] { 1, 2, DependencyType.StartToFinish, new TimeSpan(12, 0, 0) });
    table.Rows.Add(new object[] { 2, 3, DependencyType.StartToStart, null });
    return table;
}
vb
ganttControl1.TreeListMappings.KeyFieldName = "ID"
ganttControl1.TreeListMappings.ParentFieldName = "ParentID"
ganttControl1.ChartMappings.TextFieldName = "Text"
ganttControl1.ChartMappings.StartDateFieldName = "StartDate"
ganttControl1.ChartMappings.FinishDateFieldName = "FinishDate"
ganttControl1.DataSource = GetTasks()

ganttControl1.DependencyMappings.PredecessorFieldName = "PredecessorID"
ganttControl1.DependencyMappings.SuccessorFieldName = "SuccessorID"
ganttControl1.DependencyMappings.TypeFieldName = "DependencyType"
ganttControl1.DependencyMappings.LagFieldName = "TimeLag"
ganttControl1.DependencySource = GetDependencies()

Private Function GetTasks() As DataTable
    Dim table As New DataTable()
    Dim id As New DataColumn("ID", GetType(Integer))
    Dim parentId As New DataColumn("ParentID", GetType(Integer))
    Dim taskText As New DataColumn("Text", GetType(String))
    Dim start As New DataColumn("StartDate", GetType(DateTime))
    Dim finish As New DataColumn("FinishDate", GetType(DateTime))
    table.Columns.AddRange(New DataColumn() {id, parentId, taskText, start, finish})
    table.Rows.Add(New Object() { 1, 0, "Task 1", DateTime.Now, DateTime.Now.AddDays(1) })
    table.Rows.Add(New Object() { 2, 0, "Task 2", DateTime.Now.AddDays(1), DateTime.Now.AddDays(2) })
    table.Rows.Add(New Object() { 3, 0, "Task 3", DateTime.Now.AddDays(2), DateTime.Now.AddDays(3) })
    Return table
End Function

Private Function GetDependencies() As DataTable
    Dim table As New DataTable()
    Dim predecessor As New DataColumn("PredecessorID", GetType(Integer))
    Dim successor As New DataColumn("SuccessorID", GetType(Integer))
    Dim dependencyType As New DataColumn("DependencyType", GetType(DevExpress.XtraGantt.DependencyType))
    Dim lag As New DataColumn("TimeLag", GetType(TimeSpan))
    table.Columns.AddRange(New DataColumn() {predecessor, successor, dependencyType, lag})
    table.Rows.Add(New Object() {1, 2, DevExpress.XtraGantt.DependencyType.StartToFinish, New TimeSpan(12, 0, 0)})
    table.Rows.Add(New Object() {2, 3, DevExpress.XtraGantt.DependencyType.StartToStart, Nothing})
    Return table
End Function

See Also

DependencySource

DependencyMappings

PredecessorsFieldName

Task Dependencies

GanttControl Class

GanttControl Members

DevExpress.XtraGantt Namespace