GanttChartMappings.PredecessorsFieldName Property
Gets or sets the data source field that specifies a task’s predecessors. The data field should contain an IList object or a String value with keys separated by space, comma, or semicolon (‘ ‘, ‘,’ ‘;’).
Namespace: DevExpress.XtraGantt
Assembly: DevExpress.XtraGantt.v20.1.dll
NuGet Package: DevExpress.Win.Gantt
Declaration
[DXCategory("Mappings")]
[DefaultValue("Predecessors")]
[XtraSerializableProperty]
public string PredecessorsFieldName { get; set; }
Property Value
Type | Default | Description |
---|---|---|
String | "Predecessors" | The data source field that specifies a task’s predecessors. |
Remarks
The DataSource property allows you to bind the control to a data source. The KeyFieldName property specifies a task’s unique identifier (key). See the TreeList.KeyFieldName property for more information.
The ParentFieldName property specifies a parent task’s key. This field allows you to organize tasks in a tree. See the TreeList.ParentFieldName property for more information.
You can also use a task’s key to specify the task’s predecessor(s).
If you need finish-to-start dependencies only, use the PredecessorsFieldName
property to specify the data field that contains predecessors’ keys. The data should be of the System.Collections.IEnumerable type. The enumerator should return key values of the same type as the key field. In particular, you can use the following types:
- IList — use this type to allow users to modify dependencies and save changes to the data source. The collection should not be read only.
- String — the string should contain keys separated by space, comma, or semicolon (‘ ‘, ‘,’ ‘;’).
If you need finish-to-start and other dependency types, use the PredecessorFieldName and SuccessorFieldName properties and a separate data source assigned to the DependencySource property. See Task Dependencies for more information.
Example
The code below shows how to specify tasks and dependencies.
ganttControl1.TreeListMappings.KeyFieldName = "ID";
ganttControl1.TreeListMappings.ParentFieldName = "ParentID";
ganttControl1.ChartMappings.TextFieldName = "Text";
ganttControl1.ChartMappings.StartDateFieldName = "StartDate";
ganttControl1.ChartMappings.FinishDateFieldName = "FinishDate";
ganttControl1.ChartMappings.PredecessorsFieldName = "Predecessors";
ganttControl1.DataSource = GetTasks();
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));
DataColumn predecessors = new DataColumn("Predecessors", typeof(string));
table.Columns.AddRange(new DataColumn[] { id, parentId, text, start, finish, predecessors });
table.Rows.Add(new object[] { 1, 0, "Task 1", DateTime.Now, DateTime.Now.AddDays(1), null });
table.Rows.Add(new object[] { 2, 0, "Task 2", DateTime.Now.AddDays(1), DateTime.Now.AddDays(2), 1 });
table.Rows.Add(new object[] { 3, 0, "Task 3", DateTime.Now.AddDays(2), DateTime.Now.AddDays(3), "1, 2"});
return table;
}