Get Started!

DataItemsRef

A DataItems property that references a set of DataItems Where "T" inherits from DataItem.

Canvas has a built-in relational property that allows you to link DataItems with each other via the DataItemsRef property.

This references a List List<DataItem> of type T, see the DataItemRef for how to relate a single item.

Adding a DataItemsRef<T> property

To add a DataItemsRef<T> to a given DataType, use the "Add Property" dialog & select the following value

  • Type - Special
  • Special Type - DataItemsRef<TypeToRef>
  • Default Value - new DataItemsRef<TypeToRef>()

Where TypeToRef is the Type which you are refering, for example Tag.

Note You need to include the Namespace via the Using field of the DataItem, found when you click "Toggle Settings" on the Edit DataItem screen.

Remember to Generate.

Properties & Methods

You could interact directly with this property in your code but we reccomend extending the DataItem, via the MyTypes/mytype-extend.cs file, with a get / set.

For example, the following defines a get & set for a property aTags of type List<Tag> which references another property oTagsRef of type DataItemsRef<Tag>.

[BsonIgnore]
public List<Tag> aTags
{
  get { return oTagRefs.aDataItems; }
  set { oTagRefs.SetDataItems(this, value, "_CATEGORY"); }
}

The get simply returns the aDataItems property of the DataItemsRef. We add the get to make our external use of this DataType more legiable.

However, internally DataItemsRef<T>.aDataItems executes a query against the data server for the referenced item. If any matches are found the result is cached.

The set updates the reference by invoking the SetDataItems method. The last param allows for a reverse look up, allowing you to reference the DataItem with this property via the Tag.

The SetDataItems method also records the sort / order of the items assigned, so when the get is referenced, the items returned are in the same sequence as they where when assigned.

Note, the use of the [BsonIgnore] attribute, this stops the field being written to the MongoDB.