using System;
using System.Data;
namespace BuildingTrees
{
public class SlowTree
{
public SlowTree()
{
}
public TreeNode LoadTree(DataView dataTree)
{
// Prepare the resulting rootnode
TreeNode rootNode = null;
// Loop through the dataview
foreach (DataRowView dataNode in dataTree)
{
// Store the current record in typed variables
int nodeID = (int)dataNode["NodeID"];
int parentNodeID = (int)dataNode["ParentNodeID"];
string text = dataNode["NodeText"].ToString();
// Check if the current node is the rootnode
if (nodeID == parentNodeID)
{
// Yes, so create the node, and start searching for it's child nodes
rootNode = new TreeNode(nodeID, null);
rootNode.Text = text;
LoadChildNodes(rootNode, dataTree);
}
}
// Return the result
return rootNode;
}
private void LoadChildNodes(TreeNode parentNode, DataView dataTree)
{
// Loop throught the dataview
foreach (DataRowView dataNode in dataTree)
{
// Store the current record in typed variables
int nodeID = (int)dataNode["NodeID"];
int parentNodeID = (int)dataNode["ParentNodeID"];
string text = dataNode["NodeText"].ToString();
// Check if the current node is not the root node, and if the current node is a child node of the supplied parent node
if (nodeID != parentNodeID && parentNodeID == parentNode.ID)
{
// Yes, create the node and start searching for it's child nodes.
TreeNode node = new TreeNode(nodeID, parentNode);
node.Text = text;
LoadChildNodes (node, dataTree);
}
}
}
}
}