Storing custom data for all page types

If you need to add raw data to a page, regardless of its page type and corresponding data types, use the NodeCustomData column of the CMS_Tree database table, or the DocumentCustomData column of the CMS_Document table.

The columns are not editable from the administration interface. You can access the columns in the API using properties of objects of the TreeNode class:

  • TreeNode.NodeCustomData
  • TreeNode.DocumentCustomData

Store and retrieve data using the indexer notation. The data is automatically serialized to an XML key-value structure and can be persisted in the database. For example, the custom data: 

Storing a collection of custom values



treeNode.NodeCustomData["Data1"] = "Value 1";
treeNode.NodeCustomData["Data2"] = "Value 2";

// Persists the changes in the database
treeNode.SubmitChanges(true);


Results in the following XML structure:

Internal XML structure



<CustomData>
    <Data1>
        Value 1
    </Data1>
    <Data2>
        Value 2
    </Data2>
</CustomData>


Access the data in code using specified key values:




// Retrieves 'Value 1'
var data = treeNode.NodeCustomData["Data1"];