Task.ExtendedAttributes
Contents
[
Hide
]Task.ExtendedAttributes property
Gets ExtendedAttributeCollection object containing the values of an extended attribute.
public ExtendedAttributeCollection ExtendedAttributes { get; }
Remarks
Two pieces of data are necessary - a pointer back to the extended attribute table which is specified either by the unique ID or the Field ID, and the value which is specified either with the value, or a pointer back to the value list.
Examples
Shows how to read task extended attributes.
var project = new Project(DataDir + "ReadTaskExtendedAttributes.mpp");
// Create extended attribute definition
var definition = ExtendedAttributeDefinition.CreateTaskDefinition(CustomFieldType.Start, ExtendedAttributeTask.Start7, "Start 7");
project.ExtendedAttributes.Add(definition);
// Get zero index task
var tsk = project.RootTask.Children.GetById(1);
// Add extended attribute
var extendedAttribute = definition.CreateExtendedAttribute();
extendedAttribute.DateValue = DateTime.Now;
// Also the following short syntax can be used: ExtendedAttribute attribute = attributeDefinition.CreateExtendedAttribute(DateTime.Now);
tsk.ExtendedAttributes.Add(extendedAttribute);
// Create an Extended Attribute Definition of Text1 type
var taskExtendedAttributeText1Definition =
ExtendedAttributeDefinition.CreateTaskDefinition(CustomFieldType.Text, ExtendedAttributeTask.Text1, "Task City Name");
// Add it to the project's Extended Attributes collection
project.ExtendedAttributes.Add(taskExtendedAttributeText1Definition);
var newTask = project.RootTask.Children.Add("Task 1");
// Create an Extended Attribute from the Attribute Definition
var taskExtendedAttributeText1 = taskExtendedAttributeText1Definition.CreateExtendedAttribute();
// Assign a value to the generated Extended Attribute. The type of the attribute is "Text", the "TextValue" property should be used.
taskExtendedAttributeText1.TextValue = "London";
// Add the Extended Attribute to task
newTask.ExtendedAttributes.Add(taskExtendedAttributeText1);
// Create an Extended Attribute Definition of Text2 type
var taskExtendedAttributeText2Definition = ExtendedAttributeDefinition.CreateLookupTaskDefinition(
CustomFieldType.Text,
ExtendedAttributeTask.Text2,
"Task Towns Name");
// Add lookup values for the extended attribute definition
taskExtendedAttributeText2Definition.AddLookupValue(new Value { Id = 1, StringValue = "Town1", Description = "This is Town1" });
taskExtendedAttributeText2Definition.AddLookupValue(new Value { Id = 2, StringValue = "Town2", Description = "This is Town2" });
// Add it to the project's Extended Attributes collection
project.ExtendedAttributes.Add(taskExtendedAttributeText2Definition);
var task2 = project.RootTask.Children.Add("Task 2");
// Crate an Extended Attribute from the Text2 Lookup Definition for Id 1
var taskExtendedAttributeText2 = taskExtendedAttributeText2Definition.CreateExtendedAttribute(taskExtendedAttributeText2Definition.ValueList[1]);
// Add the Extended Attribute to task
task2.ExtendedAttributes.Add(taskExtendedAttributeText2);
// Create an Extended Attribute Definition of Duration2 type
var taskExtendedAttributeDuration2Definition = ExtendedAttributeDefinition.CreateLookupTaskDefinition(
CustomFieldType.Duration,
ExtendedAttributeTask.Duration2,
"Some duration");
// Add lookup values for extended attribute definition
taskExtendedAttributeDuration2Definition.AddLookupValue(
new Value { Id = 3, Duration = project.GetDuration(4, TimeUnitType.Hour), Description = "4 hours" });
taskExtendedAttributeDuration2Definition.AddLookupValue(new Value { Id = 4, Duration = project.GetDuration(1, TimeUnitType.Day), Description = "1 day" });
taskExtendedAttributeDuration2Definition.AddLookupValue(
new Value { Id = 5, Duration = project.GetDuration(1, TimeUnitType.Hour), Description = "1 hour" });
taskExtendedAttributeDuration2Definition.AddLookupValue(
new Value { Id = 6, Duration = project.GetDuration(10, TimeUnitType.Day), Description = "10 days" });
// Add the definition to the project's Extended Attributes collection
project.ExtendedAttributes.Add(taskExtendedAttributeDuration2Definition);
var task3 = project.RootTask.Children.Add("Task 3");
// Create an Extended Attribute from the Duration2 Lookup Definition for Id 3
var taskExtendedAttributeDuration2 =
taskExtendedAttributeDuration2Definition.CreateExtendedAttribute(taskExtendedAttributeDuration2Definition.ValueList[3]);
// Add the Extended Attribute to task
task3.ExtendedAttributes.Add(taskExtendedAttributeDuration2);
// Create an Extended Attribute Definition of Finish2 Type
var taskExtendedAttributeFinish2Definition = ExtendedAttributeDefinition.CreateLookupTaskDefinition(
CustomFieldType.Finish,
ExtendedAttributeTask.Finish2,
"Some finish");
// Add lookup values for extended attribute definition
taskExtendedAttributeFinish2Definition.AddLookupValue(
new Value { Id = 7, DateTimeValue = new DateTime(1984, 01, 01, 00, 00, 01), Description = "This is Value2" });
taskExtendedAttributeFinish2Definition.AddLookupValue(
new Value { Id = 8, DateTimeValue = new DateTime(1994, 01, 01, 00, 01, 01), Description = "This is Value3" });
taskExtendedAttributeFinish2Definition.AddLookupValue(
new Value { Id = 9, DateTimeValue = new DateTime(2009, 12, 31, 00, 00, 00), Description = "This is Value4" });
taskExtendedAttributeFinish2Definition.AddLookupValue(new Value { Id = 10, DateTimeValue = DateTime.Now, Description = "This is Value6" });
// Add the definition to the project's Extended Attributes collection
project.ExtendedAttributes.Add(taskExtendedAttributeFinish2Definition);
var task4 = project.RootTask.Children.Add("Task 4");
// Create an Extended Attribute from the Finish2 Lookup Definition for Id 3
var taskExtendedAttributeFinish2 = taskExtendedAttributeFinish2Definition.CreateExtendedAttribute(taskExtendedAttributeFinish2Definition.ValueList[3]);
// Add the Extended Attribute to task
task4.ExtendedAttributes.Add(taskExtendedAttributeFinish2);
var collector = new ChildTasksCollector();
TaskUtils.Apply(project.RootTask, collector, 0);
// Read extended attributes for tasks
foreach (var task in collector.Tasks)
{
foreach (var attribute in task.ExtendedAttributes)
{
Console.WriteLine(attribute.FieldId);
Console.WriteLine(attribute.ValueGuid);
switch (attribute.AttributeDefinition.CfType)
{
case CustomFieldType.Date:
case CustomFieldType.Start:
case CustomFieldType.Finish:
Console.WriteLine(attribute.DateValue);
break;
case CustomFieldType.Text:
Console.WriteLine(attribute.TextValue);
break;
case CustomFieldType.Duration:
Console.WriteLine(attribute.DurationValue.ToString());
break;
case CustomFieldType.Cost:
case CustomFieldType.Number:
Console.WriteLine(attribute.NumericValue);
break;
case CustomFieldType.Flag:
Console.WriteLine(attribute.FlagValue);
break;
case CustomFieldType.Null:
case CustomFieldType.RBS:
case CustomFieldType.OutlineCode:
return;
default:
return;
}
}
}
project.Save(OutDir + "ReadWriteTaskExtendedAttributes_out.mpp", SaveFileFormat.Mpp);
See Also
- class ExtendedAttributeCollection
- class Task
- namespace Aspose.Tasks
- assembly Aspose.Tasks