See !
did the code for it
private void BindTreeViewControl()
{
try
{
DataTable dt = new DataTable();
dt.Columns.Add("ID", typeof(int));
dt.Columns.Add("NAME", typeof(string));
dt.Columns.Add("PARENT", typeof(string));
dt.Rows.Add(1, "Patrick ", "primary");
dt.Rows.Add(2, "Mark", "primary");
dt.Rows.Add(3, "Scott", "Mark");
dt.Rows.Add(4, "Jason", "Patrick");
dt.Rows.Add(5, "Julian", "Primary");
dt.Rows.Add(6, "John", "Scott");
dt.Rows.Add(7, " Steve", "Scott");
dt.Rows.Add(8, " George", "Patrick");
dt.Rows.Add(9, "Robert", "George");
dt.Rows.Add(10, "Rodney", "George");
DataTable dtParent = (from f in dt.AsEnumerable()
where f.Field<string>("PARENT").ToLower() == "primary"
select f).ToList().CopyToDataTable();
for (int i = 0; i < dtParent.Rows.Count; i++)
{
TreeNode root = new TreeNode(dtParent.Rows[i]["NAME"].ToString(), dtParent.Rows[i]["ID"].ToString());
root.SelectAction = TreeNodeSelectAction.Expand;
CreateNode(root, dt);
TreeView1.Nodes.Add(root);
}
}
catch (Exception Ex) { throw Ex; }
}
public void CreateNode(TreeNode node, DataTable Dt)
{
DataTable dtChild = new DataTable();
var varChiled = (from f in Dt.AsEnumerable()
where f.Field<string>("PARENT").ToLower() == node.Text.ToLower()
select f).ToList();
if (varChiled.Count > 0) dtChild = varChiled.CopyToDataTable();
if (dtChild.Rows.Count == 0) { return; }
for (int i = 0; i < dtChild.Rows.Count; i++)
{
TreeNode Childnode = new TreeNode(dtChild.Rows[i]["NAME"].ToString(), dtChild.Rows[i]["ID"].ToString());
Childnode.SelectAction = TreeNodeSelectAction.Expand;
node.ChildNodes.Add(Childnode);
CreateNode(Childnode, Dt);
}
}