AddNodes(TreeViewProduct.Nodes, "", union);
you need recursive method like below, not tested :-)
private void AddNodes(TreeNodeCollection nodes, int parentNode, System.Data.DataTable dt)
{
string filterExp = string.Format("ParentNode='{0}'", parentNode);
foreach (System.Data.DataRow r in dt.Select(filterExp))
{
TreeNode item = new TreeNode()
{
Text = r[0].ToString(),
Value = r[0].ToString()
};
this.AddNodes(item.ChildNodes, int.Parse(r[1].ToString()), dt);
nodes.Add(item);
}
}